Câu trả lời:
Đối với các tài liệu thẩm thấu, tôi thấy tùy chọn lệnh :
--bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201
đối với PostGIS, bạn có thể sử dụng ST_MakeEn phong bì (trái, dưới, phải, trên, srid) để xây dựng một hộp giới hạn, sau đó &&
toán tử hộp giới hạn để tìm nơi các hộp giới hạn giao nhau:
SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(10.9351, 49.3866, 11.201, 49.5138, 4326);
SRID 4326 dành cho WGS84 Lat / Long và chỉ được yêu cầu cho PostGIS 1.5; nó có thể được bỏ qua cho các phiên bản sau.
Tôi nghĩ nó sẽ giống như thế này: Hộp giới hạn trong PostGIS được tạo bởi
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid>)
Truy vấn sẽ sử dụng ST_Intersection với truy vấn con.
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;
Tôi ít nhiều đã lấy điều này từ các trang trợ giúp của PostGIS
Một truy vấn thứ hai, trên bảng cách, được thiết kế tương tự như trên (nhưng với ST_Dimension () = 1) sẽ có được các cách.
HTH, Micha
có một chủ đề ở đây tương tự như câu hỏi của bạn ở đây ...
ST_Intersection - (T) Trả về hình học đại diện cho phần được chia sẻ của geomA và geomB. Việc thực hiện địa lý thực hiện chuyển đổi thành hình học để thực hiện giao cắt và sau đó chuyển đổi trở lại WGS84.
1. bạn cũng có thể nhận được một số thông tin ở đây về Hàm xây dựng hình học.
SELECT ST_AsText(ST_Intersection(
ST_Buffer('POINT(0 0)', 2),
ST_Buffer('POINT(3 0)', 2)
));
2.Một thông tin khác ở đây về Giao lộ Giao lộ: 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;
Tôi hy vọng nó sẽ giúp bạn...
Đây là một nhận xét về mã của @ Micha.
Các cặp tọa độ cho POLYGON
theo thứ tự theo chiều kim đồng hồ (hoặc ngược chiều kim đồng hồ): phía trên bên trái, phía trên bên phải, phía dưới bên phải, phía dưới bên trái, phía trên bên trái một lần nữa.
Vì vậy, theo chiều kim đồng hồ, chức năng gọi phải là:
ST_GeomFromText('POLYGON((ulx uly, urx ury, lrx lry, llx llr, ulx uly))', <srid>)
Hoặc ngược chiều kim đồng hồ:
ST_GeomFromText('POLYGON((ulx uly, llx llr, lrx lry, urx ury, ulx uly))', <srid>)