java - 如何使用 JDBC 将多边形插入 PostGIS
问题描述
我将多边形作为一组点。(文本或 JSON 表示)
我需要执行以下操作:
1) 使用 JDBC 将多边形插入 PostGIS
2)我得到一个对象坐标(点),我需要检查这个点是否在多边形内。
我看到了不同的例子,但我没有找到任何使用 JDBC ( Java ) 的例子。
您能否分享一下简单的 java 代码片段或指向我已经存在的示例。
注意我的多边形不是一个循环
谢谢奥列格。
解决方案
您可以使用经典的 JDBC 调用,主要区别在于您编写的 PL/SQL 和使用的输入/输出格式。
1.构造Java geom对象
- Postgis 可以读取某些格式(参见 2.)。因此,应该使用可以以这种格式之一导出的 java 对象。
- 阅读器可以直接读取输入(例如文件或字符串)。
例子: 见org.locationtech.jts.io
- 也可以自己构建几何对象并将它们转换为正确的格式。
示例:查看org.locationtech.jts.geom
类和org.locationtech.jts.geom.Geometry.toText()
(导出为 WKT 格式)
2.插入数据
您可以使用 Postgis Geometry Constructors使用您的数据格式来构造对象。有多种可用格式:WKT、EWKT、GeoJSON、GML、KML 等。例如:
INSERT INTO table(geom) VALUES ST_GeomFromEWKT(?)
3. 获取包含点的多边形
您可以使用 Postgis空间关系和测量功能。在您的情况下, ST_Contains或ST_Intersects可能是准确的。
SELECT geom FROM table WHERE ST_Contains(geom, ST_GeomFromEWKT(?))
推荐阅读
- grafana-loki - 使用 Promtail 管道阶段处理 Windows 事件
- javascript - 在 Angular 中拖动时弹出模式会粘在鼠标光标上
- json - 使用 map 从 json 反序列化 Flutter 中的对象不起作用
- opencl - OpenCL 平台术语
- javascript - Express-form-data 未正确解析数据
- ansible - 通过 Ansible 获取 (u'[Errno 111] Connection denied', True)
- c - 如何用我自己的错误替换“浮点异常”错误
- javascript - 有没有一种简单的方法来最小化我编写的用于过滤空键值、数组结构、检查 2 个数组中的特殊字符的常见 ES6 函数
- r - 去除 scatter3D 图周围的空白
- html - marging 向右扩展页面的宽度?如何禁用它