Réponses:
Pour la documentation sur l'osmose, l'option de commande suivante apparaît :
--bounding-box top=49.5138 left=10.9351 bottom=49.3866 right=11.201
pour PostGIS, vous pouvez utiliser ST_MakeEnvelope (left, bottom, right, top, srid) pour créer un cadre de sélection, puis l' &&
opérateur du cadre de sélection pour rechercher l'emplacement des intersections entre ces derniers:
SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(10.9351, 49.3866, 11.201, 49.5138, 4326);
Le SRID 4326 concerne le WGS84 Lat / Long et n'est requis que pour le PostGIS 1.5; il peut être omis pour les versions ultérieures.
Je pense que cela ressemblera à ceci: Le cadre de sélection dans PostGIS est créé par
ST_GeomFromText('POLYGON((ulx uly, urx ury, llx llr, lrx lry, ulx uly))', <srid>)
La requête utilisera ST_Intersection avec une sous-requête.
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;
J'ai plus ou moins pris cela dans les pages d'aide de PostGIS
Une deuxième requête, sur la table des chemins, conçue de la même manière que ci-dessus (mais avec ST_Dimension () = 1) devrait donner les chemins.
HTH, Micha
il y a un sujet ici qui ressemble à votre question ici ...
ST_Intersection - (T) Retourne une géométrie qui représente la partie partagée de geomA et geomB. L'implémentation géographique effectue une transformation en géométrie pour effectuer l'intersection, puis redevient WGS84.
1.you peut également obtenir quelques informations ici sur la géométrie Constructing Fonctions.
SELECT ST_AsText(ST_Intersection(
ST_Buffer('POINT(0 0)', 2),
ST_Buffer('POINT(3 0)', 2)
));
Informations 2.Another ici à propos Intersecte Intersection: 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;
J'espère que ça t'aide...
Ceci est un commentaire sur le code de @ Micha.
Les paires de coordonnées pour le POLYGON
doivent suivre un ordre dans le sens horaire (ou anti-horaire): en haut à gauche, en haut à droite, en bas à droite, en bas à gauche, en haut à gauche.
Donc, dans le sens des aiguilles d'une montre, l'appel de fonction devrait être:
ST_GeomFromText('POLYGON((ulx uly, urx ury, lrx lry, llx llr, ulx uly))', <srid>)
Ou dans le sens antihoraire:
ST_GeomFromText('POLYGON((ulx uly, llx llr, lrx lry, urx ury, ulx uly))', <srid>)