gdaltools экспортирует точку геоджона как многоточечный - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть некоторый код Python, который использует модуль Python gdaltools для преобразования файла 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 содержит геометрию типа point

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

What I 'При экспорте данных из базы данных видно, что они преобразованы из типа Point в геоджоне в тип Multipoint в базе данных.

При загрузке геометрии из одной таблицы в другую таблицу - без преобразования- Я получаю следующую ошибку:

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

Любые идеи о том, почему ogr2ogr будет приводить к Multipoint из Point?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Спасибо @JGH за указание на ответ.

На самом деле модуль имеет способ обработки этого, который не был очевиден. В модуле pygdaltools любая геометрия, которая собирается в PostgreSQL или Postgis, автоматически устанавливается в MULTIPOINT.Чтобы переопределить это, добавьте следующий фрагмент кода ogr.geom_type = 'POINT'

0 голосов
/ 08 февраля 2019

Вы можете использовать опцию -nlt POINT

. При этом тип выходных данных будет типа POINT, а не MULTIPOINT, как вы получаете в настоящее время.

...