답변:
삼투 문서의 경우 명령 옵션이 표시됩니다 .
--bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201
PostGIS의 경우 ST_MakeEnvelope (left, bottom, right, top, srid) 를 사용하여 경계 상자를 만든 다음 &&
경계 상자 연산자 를 사용하여 경계 상자가 교차하는 위치를 찾을 수 있습니다.
SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(10.9351, 49.3866, 11.201, 49.5138, 4326);
SRID 4326은 WGS84 Lat / Long 용이며 PostGIS 1.5에만 필요합니다. 이후 버전에서는 생략 할 수 있습니다.
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 도움말 페이지
에서 위의 내용과 비슷하게 설계된 두 번째 쿼리 (그러나 ST_Dimension () = 1)를 사용하여 방법을 가져야합니다.
미시간 주 HTH
여기에 귀하의 질문과 비슷한 주제가 있습니다 ...
ST_Intersection — (T) geomA 및 geomB의 공유 부분을 나타내는 형상을 반환합니다. 지리 구현은 교차로를 수행하기 위해 형상으로 변환 한 다음 WGS84로 다시 변환합니다.
1.you 또한 몇 가지 정보를 얻을 수 있습니다 여기에 기하학 구축 기능에 대해.
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;
도움이 되길 바랍니다.
이것은 @Micha의 코드에 대한 주석입니다.
의 좌표 쌍 POLYGON
은 시계 방향 (또는 시계 반대 방향) 순서를 따라야합니다. 왼쪽 위, 오른쪽 위, 오른쪽 아래, 왼쪽 아래, 왼쪽 위.
따라서 시계 방향으로 함수 호출은 다음과 같아야합니다.
ST_GeomFromText('POLYGON((ulx uly, urx ury, lrx lry, llx llr, ulx uly))', <srid>)
또는 시계 반대 방향 :
ST_GeomFromText('POLYGON((ulx uly, llx llr, lrx lry, urx ury, ulx uly))', <srid>)