GDAL工具将GeoJSON点导出为多点

3
我有一些Python代码,使用gdaltools Python模块将GeoJSON文件转换为PostGIS。
ogr = gdaltools.ogr2ogr()
ogr.set_encoding("UTF-8")
print("Setting Input")
ogr.set_input(file_name, srs="EPSG:4326")

gdaltools.Wrapper.BASEPATH = os.environ['GDAL_PATH']

print("Setting Conn")
conn = gdaltools.PgConnectionString(host=os.environ['DB_HOST'],
                                    port=os.environ['DB_PORT'],
                                    dbname=os.environ['DB_NAME'],
                                    user=os.environ['DB_USERNAME'],
                                    password=os.environ['DB_PASSWORD'],
                                    schema=str(self.table_prefix) + "_" + str(code))

print("Setting Output")
ogr.set_output(conn, table_name=table, srs="EPSG:27700")
print("OGR Execute")
ogr.execute()

GeoJSON 包含一种类型为点的几何形状。

"geometry": {
    "type": "Point",
    "coordinates": [
        -1.0600739160455448,
        51.53592123798526
    ]
}

当我从数据库导出数据时,我发现它似乎从geojson中的Point类型转换为数据库中的Multipoint类型。

当我将一个表中的几何图形加载到另一个表中时(没有进行任何转换),我会遇到以下错误:

Geometry type (MultiPoint) does not match column type (Point)

有什么想法可以解释 ogr2ogr 为什么会从 Point 转换为 Multipoint?
2个回答

2
您可以使用选项-nlt POINT
这样做会强制输出数据类型为POINT类型,而不是当前获取的MULTIPOINT类型。

2
感谢@JGH提供的指向答案的指引。
实际上,该模块有一种处理方法并不明显。在pygdaltools模块中,任何要发送到PostgreSQL或Postgis的几何图形都会自动设置为MULTIPOINT。要覆盖此设置,请添加以下代码: ogr.geom_type = 'POINT' 最初的回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接