[英]postgis How do I find results within a given bounding box that are close to the center?
[英]Extract geometries from bounding box (within and overlapping) and copy results to new empty database
我是PostgreSQL和GIS的新手。
我确实有下载的OSM数据转储(德国地图),它通过osm2pgsql导入到支持PostGIS的PostgreSQL数据库germanyPG中 。
查询
SELECT PostGIS_Full_Version();
回报
POSTGIS="2.3.3 r15473"
GEOS="3.6.1-CAPI-1.10.1 r4317"
PROJ="Rel. 4.9.1, 04 March 2015"
GDAL="GDAL 2.2.1, released 2017/06/23"
LIBXML="2.7.8" LIBJSON="0.12"
我也有好空启用的PostGIS,PostgreSQL数据库subsetGermanyPG具有相同的属性(数据库架构,结构,表,列,索引等)germanyPG数据库。
问题1:
一旦我给出了一个矩形的坐标(见图1)。
如何查询germanyPG数据库以获取位于该给定矩形内或与该矩形重叠的所有对象(尤其是那些比该矩形大得多的对象)并将其包围(请参见图2)?
图1: https : //i.stack.imgur.com/4ZOqJ.jpg
图2: https : //i.stack.imgur.com/HEnvP.jpg
我不确定ST_Intersects是否与ST_MakeEnvelope (minLong,minLat,maxLong,max Lat,srid)结合使用,因为我不知道如何验证查询结果...
SELECT realname
FROM domain
WHERE ST_Intersects(ST_MakeEnvelope(11.5, 49.8, 12.0, 50.1, 4326),
geom:: GEOMETRY);
问题2:
将此查询结果从germanyPG数据库复制到第二个数据库子集GermanyPG中 ,最优雅的方法是什么? 注意,两个数据库都在同一远程主机系统(服务器端)上,我需要使用JAVA JTS应用程序(客户端),它们分别由“协调员”执行复制工作。
我知道我可以使用JAVA来查询germanyPG数据库,然后将查询结果存储在JAVA数据类型(可能是一个或多个数组?)中,最后将这些数据顺序插入subsetGermanyPG数据库中。
但是,如果查询范围很广(多个GB)并且需要很长时间,该怎么办。 我认为这种极端情况会导致网络流量问题,主内存泄漏等。
因此,我希望那里有更多节省资源的解决方案?
请注意,只允许我使用JAVA标准库(包括JTS)。
对于第一个问题,听起来好像您是在说服自己您的方法在起作用。 为此,我建议使用QGIS来映射您的查询结果。
对于第二个问题,听起来更简单的解决方案是从第一个表的查询中填充第二个表。 例如,请参见类似https://www.mkyong.com/database/postgresql-create-table-from-exisiting-table/的内容 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.