我正在尝试将shapefile上传到PostGIS。我正在使用Flask并从用户(.shp,.shx,.dbf和.prj)获取文件,并在使用PYSHP python库访问形状集合之前将它们保存到临时文件中。
r = shapefile.Reader(tempfile_name + '.shp')
shapes = r.shapes()
我想要做的是将形状集合中的多边形组合在一起,并将其作为一条记录添加到数据库中。基本上将多边形合并为多边形。 PostGIS表的相关列定义为:
footprint = db.Column(Geometry(geometry_type='MULTIPOLYGON', srid=27700))
我不知道如何继续合并多边形并将它们转换为可以使用SQLAlchemy和GeoAlchemy2写入PostGIS数据库的格式。将非常感激地收到关于如何进行的建议。
我已经看过地形和身材匀称,但似乎可以找到相关的信息
我正在使用
找到一个似乎有效的解决方案,但它看起来相当混乱。
我使用shapefile库的cascaded_union循环遍历shapefile.Reader的shapes()并将每个多边形保存到数组中。然后使用pygeoif库转换要保存在postgis数据库中的信息。
poly = []
for shp in r.shapes():
if shp.shapeType == 5:
poly.append(shape(shp.__geo_interface__))
footprint_poly = cascaded_union(poly)
gshape = pygeoif.MultiPolygon(pygeoif.geometry.as_shape(footprint_poly))
project.footprint = 'SRID=27700;{0}'.format(gshape.wkt)