Contoh sederhana:
>>> from shapely.geometry import MultiPoint, Point
>>> points = MultiPoint([Point(0, 0), Point(1, 0), Point(1, 1), Point(0, 1)])
>>> points.wkt
'MULTIPOINT (0 0, 1 0, 1 1, 0 1)'
>>> bad_point = Point(1, 0)
>>> points.difference(bad_point).wkt
'MULTIPOINT (0 0, 0 1, 1 1)'
Seperti yang Anda lihat, menghapus Point
dari MultiPoint
dengan menggunakan difference
merusak urutan awal. Output yang diharapkan adalah:
'MULTIPOINT (0 0, 1 1, 0 1)'
Apakah ini bug atau karena desain? Documents tidak mengatakan apa pun tentang perilaku ini.
Versi indah: 1.6.4.post1, diinstal dari conda.
Ini adalah perilaku yang diwarisi dari GEOS, perpustakaan yang Shapely adalah pembungkusnya.
Saya tidak berpikir ini adalah bug per se . Ini bukan cara kerja algoritma yang menghitung perbedaan. Kedua output secara geometris setara. Saya tidak berpikir model fitur sederhana menempatkan signifikansi pada urutan bagian dalam koleksi.
Sesuatu yang menjelaskan ini dapat ditambahkan ke dokumentasi. Saya tidak yakin di mana tempat terbaik untuk menambahkannya karena ini bukan sesuatu yang spesifik untuk metode perbedaan.
Lihat OGC 06-103r4 untuk akses fitur sederhana , 6.1.5 untuk MultiPoint:
Poin tidak terhubung atau diurutkan dengan cara yang penting secara semantik (lihat diskusi di GeometryCollection).
Jadi ini menunjukkan perilaku itu berdasarkan desain. Itu juga perilaku yang sama di JTS .
Objek serupa yang mempertahankan ketertiban adalah [Multi]LineString
, tetapi contohnya perlu diproses secara berbeda.
Ok aku paham. Saya pikir kata peringatan bahwa seseorang tidak boleh bergantung pada pelestarian pesanan dapat ditambahkan di akhir bagian _Koleksi_ .
Komentar yang paling membantu
Lihat OGC 06-103r4 untuk akses fitur sederhana , 6.1.5 untuk MultiPoint:
Jadi ini menunjukkan perilaku itu berdasarkan desain. Itu juga perilaku yang sama di JTS .
Objek serupa yang mempertahankan ketertiban adalah
[Multi]LineString
, tetapi contohnya perlu diproses secara berbeda.