Saya ingin membuat kueri untuk memilih semua cara dan simpulnya yang ada di dalam kotak pembatas menggunakan postGIS. Kotak terikat harus mencakup semua detail sebagai perintah osmosis "--bounding-box" akan diambil.
Terima kasih. fungsi ST_MakeEnvelope membutuhkan satu parameter lagi, srid. Saya tidak tahu harus meletakkan apa di sana .. ada ide?
uriel
1
Sepertinya Anda menggunakan PostGIS 1.5, yang memerlukan parameter itu. Saya pikir SRID diabaikan, jadi nilai apa pun mungkin menghasilkan hasil yang sama. Jika Anda memiliki data lat / panjang, umumnya gunakan SRID dari 4326.
Mike T
1
Sebagian besar alat hari ini memungkinkan Anda membiarkan Anda memilih SRID untuk data OSM ketika Anda memuatnya. OSM SRID default adalah 3857 (spherical mercator). SRID default untuk sebagian besar data lat / lon adalah SRID 4326 (Lat / Lon AKA WGS84). Jika Anda memuat data dengan SRID 3857, misalnya, Anda harus melakukan konversi dari LAT / LON WGS84 ke 3857: ST_Transform (ST_MakeEnvelope (LON1, LAT1, LON2, LAT2, 4326), 3857) Beberapa alat (seperti imposm3) saat ini hanya mendukung SRID 3857
Justin Swanhart
Perhatikan bahwa operator && tidak mengubah SRID untuk Anda. Pastikan Amplop yang Anda buat berada dalam SRID yang sama dengan geometri tes, atau ubah sendiri. trac.osgeo.org/postgis/ticket/2320
Nelson
1
&& operator lebih lambat komputasi daripada ST_Intersects
caiohamamura
8
Saya pikir ini akan menjadi seperti ini: Kotak pembatas di PostGIS dibuat oleh
Kueri akan menggunakan ST_Intersection dengan subquery.
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;
Saya kurang lebih mengambil ini dari halaman bantuan PostGIS
Permintaan kedua, pada tabel cara, dirancang mirip dengan di atas (tetapi dengan ST_Dimension () = 1) harus mendapatkan cara.
Hai terima kasih! apa srid? apa yang harus saya masukkan di <srid>? dan ".geom" (baris 4) tampaknya tidak valid, seharusnya ada di sana?
uriel
Maaf, saya melewatkan komentar Anda dari minggu lalu. Rid adalah kode Sistem Referensi Koordinat. yaitu 2039 untuk Israel. Penambahan .geom mengekstrak bagian Geometry dari "GeometryCollection. Anda mungkin benar bahwa itu tidak diperlukan di sini.
Micha
5
ada topik di sini yang mirip dengan pertanyaan Anda di sini ...
ST_Intersection - (T) Mengembalikan geometri yang mewakili porsi bersama geomA dan geomB. Implementasi geografi melakukan transformasi ke geometri untuk melakukan persimpangan dan kemudian mengubah kembali ke WGS84.
1.Anda juga dapat memperoleh beberapa informasi di sini tentang Fungsi Membangun Geometri.
2.Informasi lain di sini tentang Intersect 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;
Pasangan koordinat untuk POLYGONharus mengikuti urutan searah jarum jam (atau berlawanan arah jarum jam): kiri atas, kanan atas, kanan bawah, kiri bawah, kiri atas lagi.
Saya pikir ini akan menjadi seperti ini: Kotak pembatas di PostGIS dibuat oleh
Kueri akan menggunakan ST_Intersection dengan subquery.
Saya kurang lebih mengambil ini dari halaman bantuan PostGIS
Permintaan kedua, pada tabel cara, dirancang mirip dengan di atas (tetapi dengan ST_Dimension () = 1) harus mendapatkan cara.
HTH, Micha
sumber
ada topik di sini yang mirip dengan pertanyaan Anda di sini ...
1.Anda juga dapat memperoleh beberapa informasi di sini tentang Fungsi Membangun Geometri.
2.Informasi lain di sini tentang Intersect Intersection: PostGIS - ST_Intersects, ST_Intersection ...
Saya harap ini membantu Anda ...
sumber
Ini adalah komentar pada kode @ Micha.
Pasangan koordinat untuk
POLYGON
harus mengikuti urutan searah jarum jam (atau berlawanan arah jarum jam): kiri atas, kanan atas, kanan bawah, kiri bawah, kiri atas lagi.Jadi, searah jarum jam, panggilan fungsi harus:
Atau berlawanan arah jarum jam:
sumber