import psycopg2
import json
# 连接到PostgreSQL数据库
conn = psycopg2.connect(
dbname="your_db_name",
user="your_username",
password="your_password",
host="your_host"
)
cur = conn.cursor()
# 读取原始GeoJSON文件
with open('input.geojson', 'r') as f:
data = json.load(f)
# 修改GeoJSON数据中的字段类型
# 假设我们要修改的是features数组中每个元素的某个字段
for feature in data['features']:
feature['properties']['your_field'] = str(feature['properties']['your_field'])
# 将修改后的GeoJSON数据转换为JSON格式字符串
data_str = json.dumps(data)
# 准备替换数据库中的数据
cur.execute("""
DELETE FROM your_table;
INSERT INTO your_table (geom)
SELECT
ST_SetSRID(
ST_GeomFromGeoJSON(%s::json),
)
;
""", (data_str,))
# 提交更改并关闭连接
conn.commit()
cur.close()
conn.close()
在这个代码实例中,我们首先连接到PostgreSQL数据库,然后读取原始的GeoJSON文件并将其加载到变量data
中。接下来,我们通过遍历data['features']
数组,修改特定字段的类型。之后,我们将修改后的GeoJSON数据转换为JSON格式的字符串,准备好插入到数据库中。最后,我们执行SQL语句来删除旧数据并插入新数据,然后关闭数据库连接。这个例子假设你已经有了一个名为your_table
的PostGIS表,它有一个名为geom
的列用来存储GeoJSON数据。