Saya sedang membangun skrip dengan python menggunakan OGR / GDAL.
Saya memiliki satu set shapefile dan satu set file raster GeoTiff.
Saya ingin skrip abaikan shapefile saya jika tidak bersinggungan dengan area raster.
Shapefile bukan persegi panjang, jadi saya tidak bisa hanya membandingkan nilai xmin / xmax, ymin / ymax yang dikembalikan oleh layer.GetExtent (). Saya membutuhkan poligon aktual yang merepresentasikan bentuk keseluruhannya, dan kemudian beberapa cara untuk menentukan apakah poligon itu bersilangan dengan raster square.
Saya berpikir saya entah bagaimana bisa menggabungkan semua poligon di shapefile menjadi satu fitur, dan kemudian membaca geometri pada fitur itu, dan kemudian membandingkan informasi itu dengan tingkat raster. Namun, saya tidak yakin secara khusus bagaimana melakukan ini.
- Bagaimana cara mengekstrak informasi poligon perbatasan dari shapefile?
- Bagaimana cara menentukan apakah poligon itu memotong area persegi yang diberikan?
Jawaban:
Script berikut menentukan kotak pembatas dari raster dan membuat berdasarkan kotak pembatas sebuah geometri.
Selanjutnya, geometri poligon vektor ditentukan. Ini menjawab pertanyaan pertama Anda.
Terakhir, geometri vektor dan raster diuji untuk persimpangan (pengembalian
True
atauFalse
). Ini menjawab pertanyaan kedua Anda.sumber
Saya menemukan solusi @ustroetz sangat membantu tetapi perlu diperbaiki di dua tempat. Pertama, pixelHeight = transform [5] sudah bernilai negatif, jadi persamaannya seharusnya
Kedua, urutan titik-titik dalam cincin harus berlawanan arah jarum jam. Saya mengalami masalah dengan itu. Pesanan yang benar adalah:
sumber