Yanıtlar:
Osmoz dökümanları için komut seçeneğini görüyorum :
--bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201
PostGIS için bir sınırlama kutusu oluşturmak üzere ST_MakeEnvelope (sol, alt, sağ, üst, srid) , ardından sınırlama kutularının kesiştiği yeri bulmak için &&
sınırlama kutusu operatörünü kullanabilirsiniz:
SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(10.9351, 49.3866, 11.201, 49.5138, 4326);
SRID 4326, WGS84 Lat / Long içindir ve sadece PostGIS 1.5 için gereklidir; sonraki sürümler için çıkarılabilir.
Bunun gibi bir şey olacağını düşünüyorum: PostGIS'deki sınırlama kutusu tarafından oluşturulur.
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid>)
Sorgu bir alt sorgu ile ST_Intersection kullanır.
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;
Bunu PostGIS yardım sayfalarından aşağı yukarı aldım
. Yukarıdaki tabloya benzer şekilde tasarlanan ikinci bir sorgu (ancak ST_Dimension () = 1 ile) yollarını bulmalı.
HTH, Micha
Burada sorunuza benzer bir konu var ...
ST_Iersersection - (T) geomA ve geomB'nin paylaşılan kısmını temsil eden bir geometri döndürür. Coğrafya uygulaması, kesişimi yapmak için geometriye dönüşür ve ardından tekrar WGS84'e dönüşür.
1. Ayrıca Geometri Yapma İşlevleri hakkında da bilgi edinebilirsiniz .
SELECT ST_AsText(ST_Intersection(
ST_Buffer('POINT(0 0)', 2),
ST_Buffer('POINT(3 0)', 2)
));
2.Another bilgiler burada kesiştirir Kesişme hakkında: 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;
umarım sana yardımcı olur ...
Bu, @ Micha'nın koduna yapılan bir yorum.
Bunun için koordinat çiftleri POLYGON
saat yönünde (ya da saatin tersi yönünde) bir sıra izlemelidir: üst sol, üst sağ, alt sağ, alt sol, tekrar üst sol.
Bu nedenle, saat yönünde, işlev çağrısı şöyle olmalıdır:
ST_GeomFromText('POLYGON((ulx uly, urx ury, lrx lry, llx llr, ulx uly))', <srid>)
Veya saat yönünün tersine:
ST_GeomFromText('POLYGON((ulx uly, llx llr, lrx lry, urx ury, ulx uly))', <srid>)