Загрузка данных OSM в PostgreSQL с использованием Python-OGR - PullRequest
1 голос
/ 30 апреля 2019

Я хочу загрузить данные OSM в базу данных PostgreSQL, используя скрипт Python. Когда я пытаюсь этот скрипт Python, он не загружает данные OSM в базу данных. Кто-нибудь может направить меня? Я знаю, как загружать данные в PostgreSQL с помощью осмоса, но в настоящее время я ищу что-то с использованием Python.

import psycopg2
from osgeo import ogr


# connect to the database
connection = psycopg2.connect(user="postgres",
                              password="password",
                              host="localhost",
                              database="example")
# create cursor
cursor = connection.cursor()
cursor.execute("DROP TABLE IF EXISTS trial1")
cursor.execute("CREATE TABLE trial1 (id SERIAL PRIMARY KEY, geom Geometry)")
cursor.execute("CREATE INDEX trial1_index ON trial1 USING GIST(geom)")
print("Successfully created ")
connection.commit()

# define OSMfile path
osm = ogr.Open("pedestrian.osm")
layer = osm.GetLayer(1)

#  delete the existing contents of the table
cursor.execute("DELETE FROM trial1")
print(str(layer.GetFeatureCount()))
for i in range(layer.GetFeatureCount()):
    feature = layer.GetFeature(i)
    # Get feature geometry
    geometry = feature.GetGeometryRef()
    wkt = geometry.ExportToWkt()
    # Insert data into database,
    cursor.execute("INSERT INTO trial1 (geom) VALUES (ST_GeomFromText(" + "'" + wkt + "', 4326))")
    print("Data inserted successfully")
connection.commit()

ожидаемый результат: этот код должен создать таблицу в базе данных, а также импортировать в нее данные из данного файла. В настоящее время этот код просто создает таблицу. После создания таблицы он не выдает ошибку, он говорит, что процесс завершен с кодом выхода 0.

...