Saya memiliki dataset besar dalam database PostGIS. Saya melihatnya melalui antarmuka web yang memuat data sebagai GeoJSON. Ada terlalu banyak data untuk diberikan kepada klien sekaligus (senilai 10 MB) ... jadi saya ingin mendapatkan area data di dalam kotak pembatas yang dibentuk oleh tepi jendela (garis putus-putus pada gambar di bawah) ). Mendapatkan koordinat untuk poin f dan g itu mudah.
Pertanyaan 1: Apakah ini cara yang baik untuk melakukan sesuatu? Haruskah saya berpikir caching mereka sebagai ubin atau apakah metode ini cenderung cukup efisien?
Pertanyaan 2: Bagaimana cara mengambil hanya data di dalam kotak pembatas ini?
Pertanyaan 3: Jika bentuk tumpang tindih dengan tepi kotak pembatas (mis. Bentuk A di bawah) apakah ada cara sederhana untuk memotongnya seperti yang ditanyakan seperti pada gambar kedua?
Jawaban:
cukup ubah urutan pertanyaan dan Anda memiliki prosedur:
2) Pilih hanya apa yang memotong bbox (
ST_Intersects
).3) Persimpangan dengan bbox untuk memotong poligon (
ST_Intersection
).1) Buat tabel baru dengan hasil (
CREATE TABLE newtable AS SELECT...
).ST_Intersection docs berisi contoh kode. Anda harus menyesuaikannya dan menggunakan ST_PolygonFromText sebagai bbox.
sumber
Saya pikir sebagian besar (semua) klien web (dan desktop gis juga) melakukan hal ini. Anda tidak dapat mengirim seluruh dataset.
Jika Anda harus mengatur semacam caching tergantung pada apakah data Anda bervariasi statis atau jika itu berubah.
Untuk membuat kotak pembatas ini centang untuk mendapatkan data akan sangat cepat (jika Anda memiliki indeks spasial), tetapi tentu saja itu tidak gratis. Anda akan membayar dengan cpu-power.
Seperti yang dikatakan sebelumnya: Untuk menemukan poligon di dalam batas Anda, Anda menggunakan ST_Intersects.
Untuk mendapatkan hanya bagian di dalam batas Anda gunakan ST_Intersection, tetapi jangan lakukan itu. ST_Intersection adalah proses yang mahal. Kecuali jika Anda memiliki poligon yang sangat besar, saya pikir lebih baik untuk mengirim seluruh poligon.
Tapi saya kira Anda ingin melakukan ini dengan cepat alih-alih meletakkannya di meja
sumber