• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

PostGIS Ausgabe anhand von Geo-Koordinaten begrenzen

Killerlort

Geocacher
Hallo lieber Geoclub,

Habe mal wider eine frage zum GIS. Kann mann die Ausgabe bei POSTGIS anhand eines "Rechtecks" begrenzen? Also eine start lat, lon und eine End lat, lon angeben und alle Pfade die dazwischen sind auslesen.

Grüße

Killerlort
 

moenk

Administrator
Teammitglied
Dafür ist der Operator "@" da: http://postgis.refractions.net/documentation/manual-1.3/ch06.html#id2576880
 

moenk

Administrator
Teammitglied
Ich kenn weder Deine Abfrage noch Deine Tabellen und meine Glaskugel ist kaputt.
 

moenk

Administrator
Teammitglied
Beispiel:
Code:
select id as osm_id, null as osm_user, user_id as osm_uid, tstamp as osm_timestamp, 
geom, tags->'name' as name, tags->'description' as description
from nodes as n 
where n.geom @ ST_SetSRID(ST_MakeBox2D(ST_Point($bbox_lon1,$bbox_lat1),
ST_Point($bbox_lon2,$bbox_lat2)),4326) 
and (tags->'name'!='');
Lag hier grad so rum, kommt aus einem OSM-Projekt.
 
OP
K

Killerlort

Geocacher
Vielen dank schon mal, hat mich schon ein erhebliches stück weiter gebracht :)

Aber wenn ich das so mache, dann werden ja nur die Länder zurückgeliefert die in der BountingBox sind (Welt-Grenzen-Datenbank). Ich würde aber gerne alle Linien haben die sich in der BB befinden und nicht nur die Länder wo Komplett in der BB sind.

Aufbau der Datenbank:
Code:
name | area |pop2005 | region |subregion | lon | lat | the_geom

Am ende solte es dann ungefähr so aussehen
506px-Germany_location_map.svg.png


Also die grenzen und Küsten der Nachbaren noch anzeigen, die auch innerhalb der BB sind.
 
OP
K

Killerlort

Geocacher
So habe es selbst raus gefunden, falls noch wer das mal braucht hier die Syntax

Code:
SELECT Name, ST_Intersection(the_geom, ST_setSRID(st_MakeBox2D(ST_Point([StartLat], [StartLat]), ST_Point([EndLon], [EndLat])), 4326)) from [Datenbank];
 

moenk

Administrator
Teammitglied
Dann kommst Du mit dem "@"-Operator nicht hin sondern brauchst nur eine passende ST-Funktion, die Du ja auch schon gefunden hast, aber das ist schon alles: http://postgis.refractions.net/docs/ST_Intersection.html
 
Oben