Saya bekerja di balai kota. Saya perlu mengidentifikasi bagian depan tanah. Di sini, di negara saya, kami menyebutnya "TESTADA" atau "FRENTE DE LOTE". Saya tidak menemukan istilah yang tepat dalam bahasa Inggris.
DEPAN TANAH adalah garis di dekat pintu masuk ke tanah. Artinya, adalah masuknya sebuah rumah. Di sinilah gerbang masuk, dengan nomor port. Untuk mencontohkan gambar berikut di bawah ini.
Peta sebelumnya:
Peta nanti dengan garis depan medan - Seperti seharusnya:
BANYAK hanya memiliki satu DEPAN TANAH. Di sudut-sudut itu jalan utama. Ada gedung-gedung tua yang akan tetap seperti itu karena ini bersejarah. Saat ini kami melakukan garis-garis FRONT LAND ini secara manual. Kami ingin mengotomatiskan bagiannya. Itu bisa menggunakan ModelBuilder.
Pendeknya:
- Dalam: LAPISAN TANAH, LAPISAN LAPISAN, LAPISAN BANGUNAN.
- Output: LAPISAN DENGAN FRONTS OF LAND LINES.
Contoh lain dari lot depan: Istilah FRONT OF LAND mengacu pada bagian depan properti. Input dari rumah adalah bagian depannya.
sumber
Jawaban:
Itu akan memerlukan beberapa kode, jadi saya akan menunjukkan beberapa pedoman sehingga Anda dapat mulai dengan sesuatu dan kemudian mengajukan lebih banyak pertanyaan. FRONT OF LAND seperti yang ditunjukkan dapat diidentifikasi dengan dua metode, keduanya menggunakan hubungan spasial:
Metode 1) Ini adalah satu-satunya sisi poligon yang tidak menyentuh poligon lain. Temukan poligon yang menyentuh, pisahkan poligon TANAH, periksa sisi-sisinya yang menyentuh poligon yang tidak menyentuh apa pun.
atau
Metode 2) Ini adalah sisi poligon yang paling dekat dengan jalan. Temukan jalan terdekat dengan poligon TANAH, pecahkan poligon, temukan sisi yang terdekat dengan jalan.
Ini dapat dilakukan dengan Postgis atau Shapely jika memilih untuk mengikuti jalur open source. Pokoknya saya akan merekomendasikan untuk melihat manual Shapely untuk mendapatkan gagasan tentang hubungan spasial yang dapat diuji, sebagian besar sama pada perangkat lunak apa pun.
sumber
Menyempurnakan @ Pablo jawaban yang baik, dengan definisi (di bawah) dan menambahkan daftar periksa untuk setiap metode, membatasi penggunaannya. Definisi:
Block layer adalah tabel SQL dengan poligon yang mewakili batas-batas blok kota , yang atau tanpa trotoar , tetapi melestarikan pribadi (lihat depan-1 ) atau lorong-lorong yang tidak dapat ditutup (lihat depan-2 ) ke dalam blok.
Lapisan Lot adalah tabel SQL dengan poligon yang mewakili batas tanah banyak .
Lapisan jalan adalah tabel SQL dengan garis-garis yang mewakili jalan ... Atau, di "tanah sungai" juga sungai (dan kereta api bisa menjadi "depan"?).
Front-1 : metode @ Pablo adalah tentang konsep umum front , di mana beberapa lot memiliki lebih dari "satu depan tentang satu jalan", karena berada di sudut (memiliki dua atau lebih segmen depan tentang semua jalan di sekitarnya).
Front-2 : "front" adalah tentang jalan yang ditunjukkan dalam alamat resmi (atau alamat korespondensi) dari lot. Mereka, semua lot (bahkan di sudut) hanya memiliki satu segmen jalan depan. PS: jika sistem alamat Anda dan lapisan blok menerima banyak " condominuim horisontal " dan kondominium-addressnya, "jalan pribadi" harus menunjukkan jalan biasa .
Ilustrasi pertanyaan @ ChristianAbreu menunjukkan konsep Front-2 (!) , Bukan yang umum.
Catatan teknis: Anda bisa pasang Python dengan PostGIS atau dengan alat lain yang sesuai dengan OGC (untuk spasial SQL) untuk mengekspresikan secara formal daftar periksa.
Periksa daftar untuk metode # 1 - sisi poligon yang tidak menyentuh poligon lain
Metode ini memiliki pendekatan topologi, hanya berlaku untuk blok di mana semua area lot membentuk area blok mereka. Jadi, untuk menggunakan metode ini, Anda perlu lapisan blok .
Mengekspresikan secara formal: periksa apakah
blkarea~=sum_lotarea
untuk setiap blok,Atau, jika goemetries tidak tepat, atau jika blok menggunakan trotoar, gunakan w paling sedikit untuk
ST_Buffer(block.geom,-w)
memastikanST_Within(lot.geom lot,ST_Buffer(block.geom,-w))
semua lot.CATATAN: periksa juga
jika semua lot berada di dalam blok,
ST_Within(lot.geom,block.geom)
untuk semua lot dan blok terkait.jika, untuk semua lot yang tidak terputus-putus, tidak ada area yang tumpang tindih.
not(ST_Overlaps(a,b))
atau area persimpangan ini tidak memiliki arti (yaitu2*ST_Area(ST_Intersection(a,b))/(ST_Area(a)+ST_Area(b))<0.01
).Periksa daftar untuk metode # 2 - sisi poligon terdekat dengan jalan
Metode ini memiliki pendekatan geometris, berdasarkan jarak euclidean minimal .
Periksa apakah layer jalan hanya memiliki "jalan umum" , karena Anda harus memisahkan "jalan umum" (yang dapat mengungkapkan alamat resmi suatu tanah) dari "lorong" (dapat berupa bagian dalam dari tanah tersebut atau "blok kondominium") ").
Kemudian, periksa secara visual, apakah semua "blok visual" dikelilingi oleh jalan-jalan. Jika layer jalan Anda tidak lengkap, metode ini tidak valid untuk blok itu.
Kesimpulan: aturan untuk memilih metode
Untuk definisi Depan-1 :
A) Ketika Anda memiliki data jalan yang baik, gunakan metode # 2 ;
B) Ketika Anda memiliki layer blok dan layer lot konsisten, gunakan metode # 1
C) Ketika Anda tidak memiliki data yang baik, coba pisahkan data spasial Anda menjadi beberapa bagian di mana Anda dapat menggunakan satu atau beberapa metode lain. PS: bahkan tanpa lapisan blok Anda dapat membangun bergabung dengan banyak tetangga, atau dengan jawaban yang bagus dari pertanyaan ini .
Untuk definisi Front-2 : Anda memerlukan data jalan yang baik, karena definisi Front-2 memerlukan nama jalan (dari alamat lot). Gunakan metode # 2 dan lepaskan segmen depan yang tidak memiliki nama jalan yang sama dari alamat lot.
sumber