Sepertinya tidak ada cara untuk mengkonversi geometri ArcObjects ke representasi Teks Terkenal (dan sebaliknya) di ArcGIS ArcObjects API. Satu-satunya hal yang dapat saya temukan adalah konversi ke WKB (antarmuka IWkb).
Apakah ada cara untuk melakukan konversi antara objek geometri dan WKT atau apakah saya harus mengimplementasikannya sendiri? Saya terutama bertujuan untuk implementasi .NET tanpa banyak ketergantungan eksternal.
sumber
Menggunakan antarmuka IWkb melakukan pekerjaan yang baik dalam mengkonversi antara IGeometry dan WKB. Dari WKB Anda dapat menggunakan perpustakaan Microsoft.SqlServer.Types untuk mengubah WKB ke SqlGeometry kemudian kembali ke WKT.
Pada titik ini Anda memiliki WKB yang tersimpan di wkb_bytes. Jika Anda ingin melanjutkan ke SqlGeometry kemudian ke WKT:
sumber
srid
sini. Saya menggunakan ini:int srid = feature.Shape.SpatialReference.FactoryCode;
Apakah Anda setuju dengan implementasi itu?Anda dapat mencoba mereferensikan perakitan Microsoft.SqlServer.Types (yang saya yakini disertakan dengan edisi Sql Server Express gratis), kemudian menggunakan metode statis STGeomFromWKB untuk membuat geometri microsoft, yang kemudian dapat dikonversi menjadi WKT menggunakan STAsText .
Juga perhatikan bahwa sementara Microsoft menangkap banyak kritik tentang kepemilikan, mereka menawarkan kode sumber ke banyak fungsi yang berguna di SqlServer Spatial Tools di codeplex. Jadi jika SqlServerTypes terlalu banyak ketergantungan eksternal untuk Anda, Anda mungkin dapat menemukan kode sumber yang melakukan ini.
sumber
NTS dapat "berbicara" WKT, dan memiliki pembaca dan penulis untuk WKB dan WKT. Jadi, jika Anda memiliki WKB, NTS dapat membacanya dan menulis ke WKT.
Namun, Anda juga bisa membuat objek NTS dengan menggunakan atribut geometri ArcObjects dan kemudian output sebagai WKT.
Untuk salah satu proyek ArcObjects kami, kami menciptakan metode utilitas untuk NTS untuk memindahkan geometri (sebagian besar untuk mengambil keuntungan dari metode proyeksi alternatif yang ditawarkan NTS).
sumber
The DNRGPS proyek open source (lisensi disini ) memiliki metode penyuluhan untuk mengkonversi antara
IGeometry
dan WKT, meskipun Anda harus beradaptasi mereka untuk tidak menggunakanIObjectFactory
jika Anda ingin menggunakannya di luar aplikasi ArcGIS.Lisensi terlihat cukup permisif jadi saya menaruh versi mandiri saya (tidak menggunakan
IObjectFactory
) itu di GitHub jika ada yang tertarik:Pembaruan: Saya telah membuat beberapa peningkatan pada versi saya untuk mendukung penerapan referensi spasial untuk objek geometri output dan menggunakan integer referensi spasial default ramah koordinat (Plate Carree) jika tidak ada yang ditentukan.
sumber
Lihat GeometryBridge, mungkin bisa membantu Anda. http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//00010000039n000000
sumber