gdaltools将geojson点导出为多点

时间:2019-02-08 12:19:06

标签: python postgis gdal ogr

我有一些使用gdaltools python模块将geojson文件转换为postgis的python代码。

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 个答案:

答案 0 :(得分:2)

您可以使用option -nlt POINT

这样做会强制输出数据类型为POINT类型,而不是当前的MULTIPOINT类型。

答案 1 :(得分:2)

感谢@JGH指出答案。

实际上,该模块具有处理这种方法的方式并不明显,在pygdaltools模块中,将要使用PostgreSQL或Postgis的任何几何都自动设置为MULTIPOINT。要覆盖此代码,请添加以下代码 ogr.geom_type = 'POINT'