Found this in the FDO data concepts page:
A geometry is represented using geometric constructs either defined as
lists of one or more XY or XYZ points or defined parametrically, for
example, as a circular arc. While geometry typically is two- or
three-dimensional, it may also contain the measurement dimension
(M) to provide the basis for dynamic ...
Create an empty point shapefile
Load the created shapefile to Layers
Right click – Edit Feature – Last button on the editor tool bar is create feature- select that- then it will appear in the create feature dialog
Select the Line shapefile you want to create points in regular intervals
Select the line
Editor tool bar drop down
You can use the LRS plugin, which enables linear referencing support for QGIS. You can read the documentation here. As you can find there, the plugin supports several linear referencing methods:
Route calibration: Helps you to set measures along routes and interpolate between missing values. It is the initial step for performing other operations on routes.
The other option that I have found is using PostGIS. This software provides the spatial extensions for the PostgreSQL rdbms. These are both Open Source. There is a Linear Referencing Component described here: Link.
If you want to be able to access this functionality through a more full-featured GIS program, then you might use the Linear Referencing ...
Assuming you have a QgsGeometry object (eg the geometry returned when calling QgsFeature.geometry()), you can access it's raw geometry info by calling QgsGeometry.geometry() in QGIS 2.x or QgsGeometry.constGet() in QGIS 3 respectively. This returns the relevant QgsAbstractGeometry subclass for the geometry type. These subclasses have methods for reading ...
I'm not sure what tool you are using, but look into linear referencing methods.
For example, if you are using PostGIS, here are 10 random points along a linestring:
SELECT ST_Line_Interpolate_Point('LINESTRING (10 20, 50 60, 80 30, 140 60)', random())
Or if using Shapely:
from random import random
from shapely.geometry import ...
Since you are already symbolizing by road condition (which I'm guessing may be represented by a few colors), I would suggest to not use a multi color dash line to represent survey origin (sometimes less is more). I generally use a buffer/fade effect for displaying multi attribute line info, see caption below.
The ST_Split PostGIS function is probably what you want.
PostGIS 2.2+ now supports Multi* geometries in ST_Split.
For older versions of PostGIS, read on:
To get a single line split by multiple points, you could use something like this multipoint wrapper plpgsql function. I've simplified it just to the "split (multi)lines with (multi)points" case below:
You should convert layer 1 from a feature class into an event table and then use the Overlay Route Events tool with the Union option. That preserves all events and attributes that exist from both event tables into a new event table where every unique closest pair of measure positions creates a new line segment. See this discussion of the Overlay Route ...
Based on your needs, as @LouisH referred to, using Linear Referencing is definitely the way to go. I cobbled together some code that should meet your need of not hard-coding elements, but instead requesting them as parameters.
As explanation, the Linear referencing tool used below takes "Routes", in your case the line features, and places "Events", in your ...
The built-in Editor tool to Construct Points will do one selected line at a time when using a specified distance. ET GeoWizards has the free point function Station Points that will create points at specified distance for all lines.
The northern two-thirds of Georgia should be pretty good, because the South Carolina coordinate reference system is Lambert conformal conic-based. Thus, the standard parallels extend through Georgia too. I ran a point at 31N 85W through the National Geodetic Survey's SPC program to see what the distortion would be. Note: South Carolina's zone is 3900. It ...
An m-aware polyline has the ability to store m-values (in addition to x and y values). M-values are 'measurement' values - distance along a given line. They are used in linear referencing datasets.
Read more on the concept of linear referencing: http://desktop.arcgis.com/en/arcmap/10.3/guide-books/linear-referencing/linear-referencing-datasets-in-arcgis....
From what I can find there doesn't appear to be an existing solution for this exact situation, but I still wanted to be able to do this in QGIS, so I took the plunge into python scripting.
A guide for writing processing algorithms can be found here https://docs.qgis.org/2.18/en/docs/user_manual/processing/scripts.html
To use this code open up the ...
This is a bug, it's been causing me problems for years. And yes, there is a workaround -- but a tedious one.
I've been in touch with ESRI Canada about this, they replicated the bug, and have told me that Esri US is working on it... I'm not sure if that means a fix for 10.1 or later. Bug is NIM069049 (you can search for that on Esri's web site, but it doesn'...
Solving a linear reference problem like this without importing any modules is beyond my range..
I have used Shapely(python package for manipulation and analysis of 2D geospatial geometries. And it is BSD licenced :-) )
download it from here . The 2.6 version which is the only one that supports arcgis 10 arcpy..It is a simple installation(1.5 MB size)
I believe you can use LengthToPointCalculator transformer. But you have to do some additional preparations:
Extract point coordinates to attributes with CoordinateExtractor.
Merge line feature with points (FeatureMerger). You need to receive one feature for each point with line geometry and original point's coordinates in the attributes. Use ...
You might need to use the linear referencing functions to get what you want. For each point, use ST_LineLocatePoint to find out what proportion along the line the point is, then for each pairing of points, use ST_LocateBetween to extract the portion of the line between the points. So rather than splitting, you're using linear referencing to extract.
Those ArcPy functions utilize the SgShape functions lower in the API stack. The ST_GEOMETRY object was built using some of those same functions, but doesn't expose them all (just the set that implements those required by Spatial Types and Functions implementation, which doesn't include LRS).
The LRS primitive list exposed at the ArcSDE API isn't large:
First you need to convert the lines to LR Routes with assigned measures. Each line should have a Field with a unique ID value of some kind that means something to you. That field will be used as the Route ID.
If the lines have to start at 0 for both ends, depending on the camera referenced as the start then you should make the Route ID something like ...
You could try something like this:
for the scenario shown above, the script below
roads1 = #path to roads layer 1
roads2 = #path to roads layer 2
r1 = [row for row in arcpy.da.SearchCursor(roads1,["SHAPE@","NAME"])]
#add field to hold required string
You can accomplish it by using the QGIS plugin LRS that enables linear referencing support for QGIS. This would be the work flow:
Based on both a line (routes) and a point (for calibration) layer, go to the Calibration tab.
Select the line layer with its route field (a field that identifies routes, it's very useful if your line layer has several routes).
Create a new LineStringM Column and use the addMeasure function.
e.g. for your example:
update TABLE set geom2 = ST_AddMeasure(geom,0,10) where id = 1;
update TABLE set geom2 = ST_AddMeasure(geom,10,12) where id = 2;
update TABLE set geom2 = ST_AddMeasure(geom,12,60) where id = 3;
would result in
id | geom | geom2
1 | LINESTRING(0 ...
It's kind of easy to do with a python script that you can run from the editor of the Qgis console.
First, you need to get your line layer and get the feature inside.
Then, you need to loop on your csvfile to get the distance and create the point with the interpolate method of QgsGeometry.
Finally, add the created point to a new point layer.
The following ...
If your route (polyline) layer's name is Route1 which has an id field (fid), and the point layer is Bears like below example.
Open the attribute table of the Bears (point) layer and start the Field Calculator.
Create a new field (Dist) which shows the distance along the line by an expression:
As with everythin in GIS there's more than one way to do it:
ArcGIS has a feature to do just this, See Divide line function. Of course, remember that you rarely have an exact division unless you use the percentage option (i.e. you will get a bit left over). And, to be honest, I found it would not always work perfectly but it doesn't do too bad a job. ...
It looks to me like there's a bug in IMSegmentation3.CalibrateByMs for v10.0 sp2. When I create a diagonal polyline from 0.0,0.0 to 10.0,10.0 with unknown measures at its vertices, then calibrate it, I would expect to see all vertices have measures - not just the ones inserted.
I get this output. I would expect to see a measure of 100.0 at 10.0,10.0 - ...
If your roads are digitized in the correct direction (the direction you need your measures to follow), you can add a new field (Type: long int, Name: From) to your road Feature Class.
Then calculate the new field to the value 0 (zero) for all the features.
Now, in your Create Routes tool, you choose the "Measure Source" to "TWO_FIELDS" and select the From (...