In QGIS 3.0, the vertex tool (same as node tool from QGIS 2.x) works a bit differently. Whether this is an improvement or not is a matter of opinion. It certainly takes a bit of getting used to.
Moving a vertex
2.x: Click on a vertex or segment to enable vertex editing for that feature. Click on vertex you want to move. Without releasing the mouse, drag it ...
In the OGC specification, which can be downloaded [here],(http://www.opengeospatial.org/standards/sfs) they state:
"Polygon rotation is not defined by this standard; actual polygon rotation may be in a clockwise or counter-clockwise direction."
In the Oracle docs, it is clearly stated that exterior ring boundaries are oriented counterclockwise, and ...
No need to create a new layer. You can show your layer's vertices using the Outline: Marker line Symbol layer type.
Just add a new symbol layer
Add a new symbol layer;
Choose Outline Marker line (top right corner);
In the Marker placement, Choose "On every vertex"
You can even style the marker to look like the red cross symbol used on layers in edit mode.
Ring (boundary) directions are needed to prevent ambiguities for geographic coordinate systems that cover a finite surface, since the boundary would define two areas, one left and one right of the boundary along it's direction. Determining which of those two areas is the bigger one is possible, but still leaves the ambiguity.
Here is an overview on outer ...
I often refer to the ESRI GIS dictionary in these cases. Based on these definitions, nodes have topology whereas vertices do not.
[Euclidean geometry] One of a set of ordered x,y coordinate
pairs that defines the shape of a line or polygon feature.
[ESRI software] In a geodatabase, the point representing the beginning or ...
This works with a standard ArcGIS license:
desc = arcpy.Describe(fcl)
shapefieldname = desc.ShapeFieldName
gebieden = arcpy.UpdateCursor(fcl)
for gebied in gebieden:
polygoon = gebied.getValue(shapefieldname)
for punten in polygoon:
for punt in punten:
print punt.X, punt.Y
Possible workaround, maybe good as just temporary solution for few data:
Enable snapping (Settings --> Snapping Options...). Set snap to vertex and set some tolerance.
Create a "dummy" line feature snapped on vertices you want move.
In snapping option check Enable topological editing
Activate node tool and select vertices of "dummy" line and move (hold ...
Yes, you can enable the Advanced digitizing tools whilst editing. When enabled, there is an active function which snaps the selected vertices to the nearest common angle. You can open the advanced tools from the menubar:
View > Panels > Advanced Digitizing Panel
Click the left-most icon to ensure it is enabed and set the common snapping angle:
There is a sample toolbox which includes a Write Features To Text File python script which:
Writes feature coordinates to a text file.
Technically, the tools in the Samples toolbox have been deprecated.
They are still installed with ArcGIS so that any existing script or
model tools you developed before 10 continue to work.
I've put together some code below which seems to create single segment lines from polyline (which can be multipart) feature classes while retaining their attributes.
I recommend that you run it against a small test dataset or two first, and if it seems to do what you want, then comment out or remove the print statements to gain some performance.
If you add ...
In order to solve your problem:
Create a FileGeodatabase
In the FileGeodatabase create a FeatureDataset
Import the shape in the FeatureDataset
In the FeatureDataset create a Topology
In the wizard choose next and in the Rules page click Add Rule
Select "Must Not Overlap" or "Must Not Have Gaps", check "Show Errors" and click OK.
Complete the wizard and ...
To extract the total number of vertices in a shapefile, I'd simply use a bit of Spatialite SQL:
ogrinfo states.shp -dialect SQLite -sql "SELECT sum(ST_NPoints(geometry)) AS n_vertices FROM states"
Example of output:
ogrinfo states.shp -dialect SQLite -sql
"SELECT sum(ST_NPoints(geometry)) AS n_vertices FROM states"
INFO: Open of `states.shp'
If you want to move a vertex you need to do start editing -> Select vertex tool -> select the vertex you want to move and move it:
Thanks to Matthias Kuhn who provided more details about the tool. In QGIS 3.x the behavior of the vertex tool is different from QGIS 2.x. In QGIS 3.x it is a click-click behavior, which means you need to click on the vertex that ...
My high level, and easy to remember, "definition" would be ...
Nodes are vertices but only two vertices are nodes i.e. those that start and end a line.
Nodes can be sub-classified into those which are:
Dangling i.e. share their precise X,Y location with no other nodes
Pseudo i.e. share their precise X,Y location with only one other node
True i.e. share ...
Here's a very simple approach that offloads all the processing into the Sort GP tool. Since you have access to an Advanced license, sorting by shape and starting at the lower left corner gives quick results.
import os, arcpy
arcpy.env.overwriteOutput = True
inFC = r'<path>'
outFC = r'<path>'
# create output FC to hold points and field to link ...
Here is a code snippet in arcpy that will do the job:
input_feature_class = r'C:\path\to\polyline_feature_class'
with arcpy.da.SearchCursor(input_feature_class, ['SHAPE@']) as s_cur:
for row in s_cur:
polyline = row
for feature in polyline:
for point in feature:
The key to ...
We are discussing a particular form of vector representation of objects in a GIS. Such objects are the continuous images of homogeneous simplicial complexes: points, multipoints, polylines, multiple polylines, (triangulable) polygons, collections of such polygons, and "TIN"s.
A simplicial complex describes two conceptually different things, albeit ones ...
The key is the difference method on geometry objects. The following code is far from efficient, since a new update cursor is opened for each polygon. But it has the added benefit of supporting multiple polygons on the same line:
import itertools, arcpy
arcpy.env.overwriteOutput = True
line_FC = r'<path to lines>'
poly_FC = r'<path to polygons>'
You can use IPointCollection this way:
public void IterateVerticesIPointCollection(IPolyline line)
// Cast the polyline to IPointCollection
IPointCollection pointColl = (IPointCollection)line;
// Iterate the array...
for (int i = 0; i < pointColl.PointCount; i++)
IPoint point = pointColl.get_Point(i);
// ...and do ...
In your screenshot you are currently in Modify or Edit Vertex mode. While in that mode right-click on your line and select "Flip".
This will reverse the digitised direction of your line, putting the end point at the other end.
From Shapely User Manual:
The defining coordinate values are accessed via the coords property.
from shapely.geometry import LineString
line = LineString([(0, 0), (1, 1)])
for coord in line.coords:
It sounds like you are working with polygons. I created a 4-corner polygon in a FGDB, and when I look at it in the editor, it does have 4 vertices:
However, when I run the following script on it, you can see it does indeed have 5 vertices (as it should), where the first and last are the same in order to close the polygon:
infc = "...
Those lines and vertices are actually holes or islands on your polygon.
Try using the delete part or delete ring tools in the advanced digitizing toolbar, and click on one of the nodes. I have noticed that sometimes you need to drag one or more nodes a bit to be able to click on the hole\island boundaries to delete it.
Hope it helps.
You can use the Select (Analysis) tool to select a subset of features based on a SQL expression and export the selected results to a new feature class. In this case, I used the following expression:
SHAPE_Area > 100
Alternatively, you can perform the same action directly on the attributes using the following workflow:
Open attribute table > Select by ...