有什么办法吗?
#1 楼
对于渗透文档,我看到命令选项: --bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201
对于PostGIS,您可以使用ST_MakeEnvelope(左,下,右,上,srid)以构建一个边界框,然后
&&
边界框运算符查找边界框相交的位置: SRID 4326适用于WGS84纬度/经度,仅PostGIS 1.5才需要;以后的版本可以省略。#2 楼
我认为应该是这样的:PostGIS中的边界框是由
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid>)
创建的。该查询将对子查询使用ST_Intersection。
SELECT bbox_nodes.id, bbox_nodes.tag, nodes_geom
FROM (SELECT nodes.id, nodes.tag,
ST_Intersection(nodes.the_geom,
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid> )).geom AS nodes_geom
FROM nodes
WHERE ST_Intersects(nodes.the_geom,
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid> )) AS bbox_nodes
WHERE ST_Dimension(bbox_nodes.nodes_geom)=0;
我或多或少地从PostGIS帮助页面中获取了此信息
在Ways表中的第二个查询与上面的查询类似(但使用ST_Dimension()= 1)应该知道方法。
HTH,
Micha
评论
你好谢谢!怎么了?我需要在
– uriel
2012年5月21日在22:27
抱歉,我错过了您上周的评论。 srid是坐标参考系统代码。即以色列的2039年。 .geom附加项提取了“ GeometryCollection”的Geometry部分。您可能是对的,因为此处不需要。
– Micha
2012年5月29日5:54
#3 楼
这里有一个与您的问题相似的主题...ST_Intersection —(T)返回表示geomA和geomB的共享
部分的几何。地理实现将
转换为几何以进行相交,然后转换回WGS84。
1.您还可以在此处获得有关几何的一些信息构造函数。
SELECT ST_AsText(ST_Intersection(
ST_Buffer('POINT(0 0)', 2),
ST_Buffer('POINT(3 0)', 2)
));
2.有关交集相交的其他信息:PostGIS-ST_Intersects,ST_Intersection ...
SELECT b.the_geom As bgeom, p.the_geom As pgeom,
ST_Intersection(b.the_geom, p.the_geom) As intersect_bp
FROM buildings b INNER JOIN parcels p ON ST_Intersection(b,p)
WHERE ST_Overlaps(b.the_geom, p.the_geom)
LIMIT 1;
我希望它可以帮助您...
#4 楼
这是@Micha的代码的注释。POLYGON
的坐标对应遵循顺时针(或逆时针)顺序:左上,右上,右下,左下,再左上。因此,顺时针方向,函数调用应为:
ST_GeomFromText('POLYGON((ulx uly, urx ury, lrx lry, llx llr, ulx uly))', <srid>)
或逆时针方向: br />
评论
谢谢。 ST_MakeEnvelope函数需要另一个参数srid。我不知道该放在那儿..有什么想法吗?
– uriel
2012年5月21日在22:32
看起来您正在使用需要该参数的PostGIS 1.5。我认为SRID被忽略,因此任何值都可能产生相同的结果。如果您有经/纬度数据,通常使用SRID 4326。
– Mike T
2012年5月21日在22:43
如今,大多数工具使您可以在加载OSM数据时为其选择SRID。默认的OSM SRID是3857(球形墨卡托)。大多数纬度/经度数据的默认SRID为SRID 4326(纬度/经度AKA WGS84)。例如,如果使用SRID 3857加载数据,则必须执行从LAT / LON WGS84到3857的转换:ST_Transform(ST_MakeEnvelope(LON1,LAT1,LON2,LAT2,4326),3857)一些工具(例如imposm3)当前仅支持SRID 3857
–贾斯汀·斯旺哈特(Justin Swanhart)
2014年1月17日在22:03
请注意,&&运算符不会为您转换SRID。确保您制作的信封与测试几何图形具有相同的SRID,否则请自行对其进行转换。 trac.osgeo.org/postgis/ticket/2320
–尼尔森
15年5月25日在20:33
&&运算符在计算上比ST_Intersects慢
– caiohamamura
2015年12月2日,0:02