您将看到一种以用户定义的间距相对于边界框生成垂直线的方法。我知道OGR,Fiona,Shapely等可以用于下一步的剪切,但是我不了解它们的用法。
如何读取多边形shapefile的一行?每个使用Shapely的应用程序都显示了如何生成LineString,Point或Polygon,但从未读取过现有的shapefile。
#1 楼
使用geo_interface协议(GeoJSON)通过Fiona,PyShp,ogr或...读取shapefile:
通过Fiona
import fiona
shape = fiona.open("my_shapefile.shp")
print shape.schema
{'geometry': 'LineString', 'properties': OrderedDict([(u'FID', 'float:11')])}
#first feature of the shapefile
first = shape.next()
print first # (GeoJSON format)
{'geometry': {'type': 'LineString', 'coordinates': [(0.0, 0.0), (25.0, 10.0), (50.0, 50.0)]}, 'type': 'Feature', 'id': '0', 'properties': OrderedDict([(u'FID', 0.0)])}
通过PyShp
import shapefile
shape = shapefile.Reader("my_shapefile.shp")
#first feature of the shapefile
feature = shape.shapeRecords()[0]
first = feature.shape.__geo_interface__
print first # (GeoJSON format)
{'type': 'LineString', 'coordinates': ((0.0, 0.0), (25.0, 10.0), (50.0, 50.0))}
带有ogr:
from osgeo import ogr
file = ogr.Open("my_shapefile.shp")
shape = file.GetLayer(0)
#first feature of the shapefile
feature = shape.GetFeature(0)
first = feature.ExportToJson()
print first # (GeoJSON format)
{"geometry": {"type": "LineString", "coordinates": [[0.0, 0.0], [25.0, 10.0], [50.0, 50.0]]}, "type": "Feature", "properties": {"FID": 0.0}, "id": 0}
计算
保存生成的shapefile
如何将Shapely几何图形写入shapefile?
更好的方法
使用Fiona从头开始编写新的shapefile
等。
#2 楼
我发现Geopandas在这里表现最好。代码:
import geopandas as gpd
shapefile = gpd.read_file("shapefile.shp")
print(shapefile)
评论
我会将geopandas添加到列表中:geopandas.read_file(“ my_shapefile.shp”)
– joris
17年8月27日在7:30
从GDAL 2.0开始,使用osgeo.gdal.OpenEx(详细信息)代替osgeo.ogr.Open。
–凯文
17年11月10日在11:28
使用ogr,我首先必须将json定义为json,以便能够通过匀称进一步处理它:
–狮子座
19-09-12在7:41