52
votes
Accepted
How to polygonize raster to shapely polygons
Use rasterio of Sean Gillies. It can be easily combined with Fiona (read and write shapefiles) and shapely of the same author.
In the script rasterio_polygonize.py
the beginning is
import rasterio
...
- 53.4k
37
votes
Accepted
Welding individual line segments into one LineString using Shapely
You can use shapely's ops.linemerge to accomplish this:
from shapely import geometry, ops
# create three lines
line_a = geometry.LineString([[0,0], [1,1]])
line_b = geometry.LineString([[1,1], [1,0]]...
- 1,674
33
votes
Accepted
Check if a point falls within a multipolygon with Python
Shapefiles have no type MultiPolygon (type = Polygon), but they support them anyway (all rings are stored in one feature = list of polygons, look at Converting huge multipolygon to polygons)
The ...
- 53.4k
32
votes
Returning lat and long of centroid point with GeoPandas
Ran into this problem myself. If you want the x and y as separate GeoDataFrame columns, then this works nicely:
gdf["x"] = gdf.centroid.map(lambda p: p.x)
gdf["y"] = gdf.centroid.map(lambda p: p.y)
...
- 2,018
30
votes
Accepted
Calculating area in km² for Polygon in WKT using Python
It wasn't readily apparent to me how to use @sgillies answer, so here is a more verbose version:
import pyproj
import shapely
import shapely.ops as ops
from shapely.geometry.polygon import Polygon
...
- 1,188
28
votes
Transforming Shapely Polygon and MultiPolygon objects
If you're using pyproj2, it's much easier to use a Transformer. Here's an example:
import pyproj
from shapely.ops import transform
project = pyproj.Transformer.from_proj(
pyproj.Proj(init='epsg:...
- 393
27
votes
Reading postgis geometry with shapely
The default format for PostGIS geometry is hex-encoded WKB (Well-Known Binary). Shapely has the ability to convert this format into shapely geometry object with its wkb module:
from shapely import ...
- 859
25
votes
Accepted
Returning percentage of area of polygon intersecting another polygon using shapely
Next code:
import fiona
from shapely.geometry import shape
path1 = '/home/zeito/pyqgis_data/polygon1.shp'
path2 = '/home/zeito/pyqgis_data/polygon8.shp'
polygon1 = fiona.open(path1)
polygon8 = ...
- 28k
24
votes
Accepted
Dissolving polygons based on attributes with Python (shapely, fiona)?
The question is about Fiona and Shapely and the other answer using GeoPandas requires to also know Pandas. Moreover GeoPandas uses Fiona to read/write shapefiles.
I do not question here the utility ...
- 53.4k
24
votes
Accepted
Converting Polygon to MultiPolygon with Shapely?
You can wrap the polygon in a list and pass that as an argument to the MultiPolygon constructor.
Demo:
from shapely.geometry.multipolygon import MultiPolygon
from shapely import wkt
p = wkt.loads(u'...
- 1,709
23
votes
Accepted
Looking for GeoPandas QGIS equivalent of ArcGIS "Select by location" tool
If poly is a GeoDataFrame with a single geometry, extract this:
polygon = poly.geometry[0]
Then, you can use the within method to check which points are within the polygon:
points.within(polygon)
...
- 3,688
23
votes
Make shapefile from raster-bounds in Python
With shapely box and GeoPandas
import rasterio as rio
ra = rio.open("raster.tif")
bounds = ra.bounds
Convert bounds to shapely geometry
from shapely.geometry import box
geom = box(*bounds)
print(...
- 53.4k
22
votes
Accepted
Removing small holes from the polygon
You can use the following example script. The script removes all holes from a polygon whose area is greater than eps.
from shapely import wkt
from shapely.geometry import Polygon
# sample polygon
...
- 70.2k
21
votes
Accepted
What units are used by GeoPandas/Shapely area and distance functions?
Shapely uses a cartesian plane system for computing geometries (distance = euclidean distance)
Shapely does not support coordinate system transformations. All operations on two or more features ...
- 53.4k
20
votes
Accepted
Shapely coordinate sequence to GeoDataFrame
Make a shapely polygon geometry from coordinate pairs.
Pass the polygon to GeoDataFrame constructor as a list.
import geopandas as gpd
from shapely.geometry import Polygon
coords = [(151....
- 70.2k
19
votes
Accepted
Returning lat and long of centroid point with GeoPandas
Leaving the rest below, but the main thing was accessing the geometry properly. If iterating over rows, e.g. for index, row in zones.iterrows(): you can simply use row.geometry.centroid.x and row....
- 6,437
19
votes
Accepted
Turning GeoDataFrame of x,y coordinates into Linestrings using GROUPBY?
I think I found an interim solution, which I'm posting in case it's useful for anyone:
import pandas as pd
import numpy as np
from geopandas import GeoDataFrame
from shapely.geometry import Point, ...
- 1,479
19
votes
Accepted
Intersecting two shape problem using geopandas
1) The problem is that the intersection of two polygons is not always a polygon
import geopandas as gp
poly1 = gp.read_file("poly_origin.shp")
poly2 = gp.read_file("poly_test.shp")
data = []
for ...
- 53.4k
19
votes
Accepted
Calculate distance from a Point within a Polygon to its edge
Compare the point to the polygon's exterior ring:
poly.exterior.distance(point)
- 8,838
19
votes
Accepted
Plotting Shapely Multipolygon using Matplotlib
Shapely Polygon object has attribute exterior. Shapely MultiPolygon object has Polygon object sequence. You should iterate over those polygons. You can do that using attribute geoms of MultiPolygon.
...
- 70.2k
18
votes
Accepted
Converting Shapely MultiPolygon to Polygon: Technique doesn't always work
You need to understand the Shapely binary predicates:
1) If the two polygons intersects the result of union or unary_union (in red) is a Polygon therefore you can computes the exterior
2) If the two ...
- 53.4k
17
votes
Accepted
Intersecting two shapefiles from Python or command line?
The question is about Shapely and Fiona in pure Python without QGIS ("using command line and/or shapely/fiona").
A solution is
from shapely import shape, mapping
import fiona
# schema of the new ...
- 53.4k
17
votes
Accepted
Rounding all coordinates in shapely?
Shapely and GEOS cannot reduce precision (floating-point precision problem) but you can use other functions as numpy.round() or round(),with the GeoJSON format.
For polygons
from shapely.geometry ...
- 53.4k
17
votes
Accepted
Auto-select suitable UTM Zone based on Grid Intersection
There's the utm package, a bidirectional UTM-WGS84 converter for python.
It's able to convert a (latitude, longitude) tuple into an UTM coordinate:
import utm
utm.from_latlon(51.2, 7.5)
>>> (...
- 14k
16
votes
Rounding all coordinates in shapely?
There are a few instances where @gene's answer does not work.
For example, the using the overprecise value -73.92391000000001
geojson = {'type': 'Polygon', 'coordinates': [[[-73.92391, 41.31064], [-...
- 596
16
votes
Split lines at points using Shapely
You have many solutions and I use here a simple example
1) the easiest way
from shapely.geometry import Point, LineString
line = LineString([(1,2),(2,4),(4,5)])
point = Point(2,4)
First, you must ...
- 53.4k
16
votes
Accepted
Drawing ellipse with shapely
Answer
First, define a circle of radius 1.
Then define an ellipse along x and y axis.
Rotate the ellipse.
Finally, actually draw the ellipse.
Code
from matplotlib import pyplot
from shapely.geometry....
- 9,111
15
votes
Accepted
Difference between Crosses & Intersects - Shapely (Python)
From Shapely's doc:
intersects() is equivalent to the OR-ing of contains(), crosses(), equals(), touches(), and within().
So there might be some cases where two lines intersect eachother without ...
- 5,529
15
votes
Accepted
Geopandas Line Polygon Intersection
When comparing geodataframes with geometry operations in Geopandas, the geometries are first matched by index. In the case where there is no matching index (because you only have a single polygon for ...
- 15.5k
15
votes
Snap points shapefile to line shapefile using shapely
The methodology is called linear referencing and a solution was given by Mike T in Coordinate of the closest point on a line with Shapely.
There is also a recipe in the Python Geospatial Analysis ...
- 53.4k
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
shapely × 882python × 637
geopandas × 248
fiona × 121
shapefile × 90
polygon × 76
intersection × 58
linestring × 58
geometry × 50
coordinate-system × 40
geojson × 35
qgis × 33
gdal × 33
postgis × 30
ogr × 29
pandas × 27
python-2.7 × 25
pyproj × 24
rasterio × 22
point × 21
geos × 19
pyqgis × 18
distance × 18
buffer × 18
coordinates × 17