Saya memiliki dB PostGIS, dan saya ingin menemukan titik-titik yang terletak di dalam suatu wilayah (kotak pembatas). Saya memiliki dua set koordinat, dari mana saya bisa mendapatkan keempat titik persegi panjang yang membentuk kotak (jika perlu). Kolom data saya yang dimaksud bernama 'point' dan juga tipe point.
- Apakah ada untuk menetapkan empat set koordinat (lat / long) dan mendapatkan semua poin yang ada di dalam kotak.
- Atau tentukan dua poin dan biarkan DB menentukan sudut-sudut persegi panjang, dan kembalikan poin di dalamnya
Kalau-kalau saya tidak jelas apa yang ingin saya capai. Setara dengan 'vanilla' sql jika saya memiliki bidang lat dan panjang bukannya titik:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
EDIT DIPERBARUI:
Saya mencoba solusi underdark. Pada awalnya saya tidak memiliki constuctor ST_MakePoint (sekarang saya lakukan) dan saya masih mendapatkan kesalahan yang sangat mirip (hanya pada karakter yang berbeda).
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
dan saya mendapatkan kesalahan ini:
ERROR: function st_makepoint(point) does not exist
LINE 1: SELECT * FROM triples WHERE ST_Within(ST_MakePoint(point),Ge...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function st_makepoint(point) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 39
EDIT:
Dalam jangka pendek saya bisa menyelesaikannya dengan:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
Tetapi saya harus mencari tahu mengapa tidak ada fungsi PostGIS yang tidak berfungsi untuk saya.
Jawaban:
<- ganti koordinat seperlunya
sumber
Kedengarannya seperti Anda menginginkan BBOX (Bounding Box) dari poin Anda - jadi ST_Extent akan menguntungkan.
BBOX2D
http://www.bostongis.com/postgis_extent_expand_buffer_distance.snippet
akan menyediakan laman http://postgis.net/docs/ST_Extent.htm tetapi server mengalami masalah
sumber