Alternatif untuk Shapefile sebagai sumber data terbuka, tipe dataset platform silang [ditutup]

20

Saya sedang mengerjakan perangkat lunak yang sangat berorientasi ESRI, tetapi versi yang akan datang kemungkinan tidak akan menggunakan perangkat lunak ESRI. Ini menggunakan Shapefile dan Geodatabases. Saya berencana untuk mengirimkan semua data saya ke Shapefile sebagai antisipasi untuk versi masa depan dari perangkat lunak yang kemungkinan akan ada di Android dan perangkat seluler lainnya. Tampaknya Shapefile adalah datatype yang paling umum untuk fitur di dunia GIS open-source, tetapi apa yang lain, dan manfaat apa yang mereka bawa? Saya kenal dengan GeoJSON dan KML, tapi saya yakin ada yang lain.

Saya ingin mengetahui semua opsi, tetapi saya sangat tertarik dengan tipe dataset yang paling cocok untuk disimpan pada perangkat seluler (data harus dapat diakses tanpa koneksi internet).

Penyamak
sumber
1
Pertanyaan dari 2011 itu diajukan sebelum GeoPackage ada dan jawaban secara alami tidak termasuk alternatif itu.
user30184
2
Esri File Geodatabase memiliki panjang maksimum bidang char yang akan menyaingi konten teks dari kebanyakan perpustakaan kecil, Esri Personal Geodatabase mendukung bidang teks yang sangat panjang juga. Keduanya dapat diakses melalui QGIS dan tentu saja Esri ArcGIS tetapi dukungan untuk tipe data ini terbatas di luar paket-paket ini. Waspadalah terhadap versi, saya akan mencoba membuat 9.3 compliant karena sebagian besar perangkat lunak Esri Anda mungkin akan temui 10+ dan API geodatabase untuk QGIS harus mendukung versi ini. GeoJSON dan KML juga dapat mendukung bidang teks besar tetapi tidak dapat dibaca secara universal.
Michael Stimson
1
Umm, 9.3 bukan rencana yang bagus untuk kompatibilitas geodatabase file - FGDB API tidak mendukung 9.x-style .gdb.
Vince
1
Shapefile @ElioDiaz masih ada, meskipun memiliki keterbatasan, karena merupakan media pemindahan fitur yang paling universal - hampir setiap paket GIS terbuka atau dapat mengimpor Esri shapefile. Formatnya adalah standar terbuka sehingga siapa pun dapat membaca dan mengimplementasikan dengan cara mereka sendiri. Tidak diragukan lagi ada format fitur SIG yang unggul tetapi mereka tidak diadopsi secara universal ... topik ini telah dibahas berkali- kali di GIS.SE. Sebanyak yang kita harapkan, jika tidak, shapefile mungkin akan menjadi penyebut umum terendah untuk fitur untuk beberapa waktu, jadi kita hanya perlu menyeringai dan menanggungnya.
Michael Stimson

Jawaban:

18

Seperti kata @ user890, ini sangat tergantung pada bagaimana data akan digunakan. Terutama ada dua cara Anda dapat mengakses data:

  1. Dengan memuat semuanya ke dalam memori dalam sekali jalan dan kemudian mengakses / meminta data dalam memori.
  2. Dengan menanyakan fitur tertentu, kotak pembatas dll.

Format seperti GeoJSON dan KML paling cocok untuk kasus ketika Anda ingin memuat semuanya dalam sekali jalan. Manfaatnya adalah bahwa data dapat disusun dengan cara yang lebih cocok untuk aplikasi Anda. Kelemahannya: ukuran file lebih besar (karena berbasis teks) dan ketidakmampuan untuk melakukan kueri efisien langsung dari file.

SQLite / Spatialite lebih baik untuk query (SQL), tetapi lebih sulit untuk menyusun data - Anda harus meratakan semuanya ke dalam tabel database dan kemudian melakukan GABUNG (yang bisa mahal) saat melakukan query.

Sebenarnya tidak ada format file yang sempurna yang akan mencakup semua (tapi sekali lagi shapefile jauh, jauh dari sempurna). Salah satu alternatif untuk dipertimbangkan adalah menggulung format spesifik aplikasi Anda sendiri, tetapi ini hanya berfungsi jika Anda tidak perlu berbagi data dengan dunia luar.

Igor Brejc
sumber
14

Saya pikir daftar Format Vektor OGR (tautan diperbarui) mengidentifikasi hampir setiap format open source yang pernah saya dengar, dan masih banyak lagi. Masing-masing format memiliki kelebihan / kekurangannya sendiri, sehingga sulit untuk mengatakan mana yang 'terbaik'. Untuk aplikasi seluler, saya membayangkan ukuran file akan menjadi salah satu faktor penentu yang lebih penting.

Untuk aplikasi seluler, saya pikir format sqlite / spatialite akan menjadi format logis untuk memulai. Saya tahu Android menyediakan dukungan asli untuk sqlite. Jadi, dengan asumsi Anda dapat memuat ekstensi spasial, Anda akan memiliki gis yang sangat kuat yang tersedia untuk Anda.

Tergantung pada seberapa petualangan Anda, akan tampak bahwa membangun gdal untuk android bukanlah hal yang mustahil. Anda kemudian bisa memiliki lebih banyak format yang Anda inginkan. Saya yakin banyak pengguna di situs ini akan tertarik jika Anda menggunakan rute ini.

pengguna890
sumber
13

Format baru yang muncul baru-baru ini adalah Geopackage . Spesifikasi ini dibangun di atas basis data SQLite, sehingga memiliki basis file tunggal yang sama, tetapi dengan manfaat tambahan sebagai standar OGC .
Adapun ukuran file, kemungkinan format penyimpanan lebih kompak daripada .shpdan .dbfformat untuk data spasial dan atribut yang digunakan dalam Shapefile. Oleh karena itu, GeoPackage cenderung memiliki ukuran yang sama, atau lebih kecil, daripada totalitas fitur yang sama dalam sebuah shapefile.
Foto ini menunjukkan saluran pembuangan utama di San Diego yang disimpan sebagai Shapefile dan GeoPackage. Seperti yang Anda lihat, mereka pada dasarnya berukuran sama. Ukuran Shapefile vs Geopackage
Karena format ini didasarkan pada SQLite, format ini seharusnya sudah jadi untuk perangkat seluler. Banyak aplikasi yang sudah menggunakan format database ini untuk penyimpanan, jadi itu adalah teknologi yang sudah terbukti. Dapat digunakan lintas platform tanpa memerlukan terjemahan apa pun.

Dapatkan Tata Ruang
sumber
4

Setuju dengan Lennert, pilih format yang tepat untuk pekerjaan itu.

Namun saya telah menemukan Spatialite menjadi format yang cukup serbaguna. Anda memiliki file tunggal yang memberi Anda fleksibilitas dalam menyimpan dan berbagi data seperti shapefile, tetapi Anda meniadakan masalah yang Anda sebutkan dengan batas karakter; sementara memberi Anda kesempatan untuk memanfaatkan manfaat dari basis data spasial.

Sayangnya itu tidak sepenuhnya didukung di ArcGIS (saya belum mencoba dalam beberapa saat sehingga saya bisa salah), tetapi berfungsi dengan baik di QGIS.

Liam G
sumber
4

Ada banyak format berbeda dan yang terbaik tergantung pada kumpulan data yang Anda miliki, alat yang Anda gunakan, dan hal-hal yang ingin Anda lakukan dengannya.

Beberapa yang saya gunakan:

  • File Geodatabase & spatialite databases: Sebuah catchall yang saya suka gunakan. Ini dapat menampung semua jenis data dan memiliki hubungan, pengindeksan ... Saya menggunakan gdb ketika bekerja di lingkungan Esri, spasial untuk hal lain.

  • GeoJson: Format yang mudah dibaca umumnya saya gunakan untuk dataset kecil yang tidak memerlukan banyak cara pengindeksan

  • Basis data yang tepat: Saya cenderung menggunakan ini untuk kumpulan data besar dan algoritma yang kompleks.

Tapi ada banyak lainnya juga.

Lennert De Feyter
sumber
3

Saya akan merekomendasikan menggunakan database SQLite / spatiallite. Ini adalah file tunggal seperti geodatabase (satu ke banyak tabel / lapisan dalam) dan dapat digunakan di ArcGIS Desktop dan QGIS.

artwork21
sumber
Saya menyimpan data poligon dalam sqlite dan memuatnya dengan QGIS, dan mendapat pesan yang mengatakan "CRS tidak terdefinisi: default ke CRS EPSG: 4326 - WGS84". Bukankah itu kehilangan info tentang proyeksi?
Ichiro
Dengan perangkat lunak apa Anda menyimpan lapisan poligon ke sqlite?
artwork21
1

Pilihannya sangat tergantung pada bahasa apa yang akan Anda gunakan dan bagaimana data akan digunakan. Android kemungkinan besar adalah Java. Setiap opsi akan menjadi semacam perbandingan biaya / manfaat berdasarkan keputusan itu. Semua format data dioptimalkan untuk kasus penggunaan tertentu.

Pertanyaan selanjutnya adalah bagaimana data akan digunakan. Akankah aplikasi seluler hanya membaca data spasial? Atau akan sering membaca dan menulis data? Seberapa sering akan bertukar data dengan perangkat atau server lain?

GeospatialPython.com
sumber