database - 将多边形坐标转换为 PostgreSQL 可以理解的格式
问题描述
我将 Django 与 PostGIS 一起使用,并尝试在我的 Postgres SQL 中导入一些数据。我的数据库中有一个 geometry(Polygon, 4326) 列:
poly | geometry(Polygon,4326) | not null
现在我想将一些 CSV 数据导入我的数据库:这是我的数据:
poly, district_number
"((51.356568, 35.765461), (51.356589, 35.765382), (51.356461, 35.76536), (51.356441, 35.765429), (51.356436, 35.765446), (51.356408, 35.765561), (51.356537, 35.765582), (51.356566, 35.76547), (51.356568, 35.765461))", 2
"((51.356568, 35.765461), (51.356589, 35.765382), (51.356461, 35.76536), (51.356441, 35.765429), (51.356436, 35.765446), (51.356408, 35.765561), (51.356537, 35.765582), (51.356566, 35.76547), (51.356568, 35.765461))", 3
....
我正在使用这个命令:
COPY get_house_info_house(poly, district_number)
FROM '/tmp/data.csv' DELIMITER ',' CSV HEADER;
我得到这个错误:
ERROR: parse error - invalid geometry
HINT: "((" <-- parse error at position 2 within geometry
CONTEXT: COPY get_house_info_house, line 2, column poly: "
((51.356568, 35.765461), (51.356589, 35.765382), (51.356461,
35.76536), (51.356441, 35.765429), (51...."
我认为 Postgres 无法识别多列格式。我可以将我的数据传输到任何格式,例如 GeoJson 或任何其他格式,但问题是如何将其传输到 Postgres 可以理解的格式。
同样在类似的问题中,我找到了“ST_GeomFromGeoJSON”,但我不知道如何在 CSV 导入中使用它。
解决方案
在 COPY 数据中,您可以使用EWKT格式的几何值,SRID 在开头。
示例(逐字记录;在 CSV 文件的上下文中,该字段将用双引号括起来):
SRID=4326;POLYGON((-71.1776585052917 42.3902909739571,-71.1776820268866 42.3903701743239,-71.1776063012595 42.3903825660754,-71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571))
请参阅https://postgis.net/docs/UpdateGeometrySRID.html或带有 SRID 的PostGISCOPY
几何? 更多。
推荐阅读
- javascript - 如何在 WordPress REST API 中获取自定义字段发布对象数据
- go - 类型为 interface{} 时初始化 nil 指针
- tooltip - Oracle APEX 20.1 - 自定义字段帮助/工具提示
- google-apps-script - 使用 Google Apps 脚本查找特定值,然后在同一行中填充单元格
- regex - 正则表达式不匹配字符串中的确切单词
- java - 我在构建应用程序时在 android studio 中遇到了 Android 资源链接失败错误。我不知道如何解决这个问题。我是 Android Studio 的新手
- javascript - 仅当屏幕宽度> 1250px时如何执行脚本
- flutter - DropdownButtonFormField 导致 RenderFlex 溢出
- flutter - 如何在颤振中集成 facebook 登录?
- powershell - 即使加载程序集,SMO Powershell 也会损坏