Melewati batas 10 karakter dari nama bidang dalam shapefile?

42

Saya mengekspor geometri dengan atribut teks terlampir dari database oracle ke format esri shapefile (.shp) dengan perpustakaan Java dan Geotools.

Kolom atribut dalam database kami memiliki nama dengan lebih dari 10 karakter, dan Geotools memaksa untuk memotongnya. Saya mengerti bahwa itu karena spesifikasi file .shp atau .dbf.

Saya dapat mengatasinya, dengan membuat beberapa file txt sederhana dengan "shrtname" = "Nama lengkap dan panjang", tetapi jelas itu tidak akan dipahami dan diimpor oleh perangkat lunak lain selain dari kami.

Apakah ada cara resmi untuk melakukan pemetaan dari nama bidang pendek ke nama teks lengkap panjang?

Misalnya, file xml di sebelah semua file .shp .dbf .shx lainnya.

denu
sumber

Jawaban:

53

Maaf, jawabannya tidak. Anda harus meluncurkan mapper bidang Anda sendiri dan hanya perangkat lunak yang menggunakan mapper Anda yang akan memahaminya. Anda dapat menggunakan format lain yang tidak memiliki batasan ini (misalnya file geodatabase, spatialite, dll).


Beberapa saran tentang solusi dari pengalaman pribadi.

Ketika orang memilih shapefile (dan bersikeras mereka) sebagai format utama mereka, itu biasanya dipilih untuk interoperabilitas - anggap itu mengikuti spesifikasi. Jika Anda memilih untuk menggulung mapper bidang Anda sendiri, pada dasarnya Anda melakukan hal sebaliknya - karena Anda melakukan hal-hal di luar spec - Anda telah membuat "extended spec" Anda.

Sudahkah saya melakukan ini di masa lalu? Iya nih. Dan itu pasti selalu berubah menjadi lebih menyakitkan daripada benar-benar menyelesaikan masalah karena setiap kali Anda mencoba untuk membuka shapefile ke hal lain yang dapat membaca / menulis shapefile, Anda berakhir dengan sebuah meja dengan sejumlah bidang yang sulit dipahami .

Pada titik itu, saya akan bertanya kepada Anda, mengapa Anda menggunakan shapefile? Entah muncul dengan solusi alur kerja yang tetap dengan spec shapefile dan keterbatasannya, atau mengubah format file. Yang lainnya hanyalah resep untuk sakit kepala.

Ragi Yaser Burhum
sumber
sayangnya pelanggan kami membutuhkan shapefile: /
denu
maka tidak ada pilihan lain :(
Ragi Yaser Burhum
1
Pilihan lain adalah solusi, beberapa di antaranya disarankan di bawah ini.
Saya memperbarui jawaban saya di atas untuk menjelaskan mengapa solusi di sekitar adalah ide yang buruk ketika pelanggan Anda hanya menginginkan shapefile.
Ragi Yaser Burhum
6
Sebagai seorang konsultan, pengalaman saya adalah menemukan cara untuk membantu klien hampir selalu lebih baik daripada mengatakan "tidak ada cara untuk melakukannya." Mencari tahu mengapa mereka membutuhkan shapefile adalah awal yang baik, dan Anda mungkin bisa menyepakati alternatif, tetapi itu tidak selalu menjadi masalah. Kebetulan, salah satu cara terbaik untuk mendapatkan ide untuk penyelesaian masalah adalah dengan mengirim pemberitahuan di Web yang mengatakan "tidak ada pilihan lain." :-)
whuber
16

Ada cara standar untuk mengatasinya, meskipun klien Anda mungkin tidak sepenuhnya senang dengan itu: Anda mengekspor dua file, satu shapefile dan file data dalam format yang dapat dibaca oleh perangkat lunak mereka. Shapefile hanya memiliki pengidentifikasi unik, [Id], untuk atribut. File data memiliki beberapa atribut: [Id] untuk mencocokkan bentuk, [Bidang] untuk memberikan nama bidang, [Tipe] untuk menunjukkan jenisnya, dan satu atribut dari setiap tipe data yang mungkin untuk menyimpan nilai. Setiap bidang dalam file asli disimpan sebagai catatan dalam file data ini.

Sebagai contoh, tabel sumber terlihat seperti ini:

[Shape] [Id] [Name]     [Population2010]
shape1  A1   California         37253956
shape2  A2   Texas              25145561
shape3  A3   Wyoming              563626

akan memiliki file data yang sesuai

[Id] [Field]        [Type]  [Text]     [Integer]
A1   Name           Text    California    <Null>
A1   Population2010 Integer <Null>      37253956
A2   Name           Text    Texas         <Null>
A2   Population2010 Integer <Null>      25145561
A3   Name           Text    Wyoming       <Null>
A3   Population2010 Integer <Null>        563262

Harus jelas bagaimana menggunakan data ini dalam RDBMS dan bagaimana mengkonversi bolak-balik antara dua format.

whuber
sumber
7

Jika pelanggan Anda menggunakan ArcGIS, Anda bisa menyediakan skrip untuk menetapkan alias bidang secara massal . Ini akan memberi mereka penampilan nama bidang yang panjang ketika mereka menggunakan data.

Skrip yang sama dapat berfungsi untuk memberikan alias dalam paket GIS lainnya juga.

Komunitas
sumber
4
Saya tentu saja senang melihat salah satu jawaban saya sangat dihargai, tetapi jawaban itu berlaku untuk geodatabases dan tidak untuk shapefile. Mereka tidak dapat menyimpan alias, meskipun di Arcgis kita dapat menyimpan file layer yang mengingat alias.
matt wilkie
Tercatat, dan terima kasih atas klarifikasi. Perhatikan juga bahwa alias bisa disimpan dengan MXD juga. Saya menyarankan agar skrip harus diberikan kepada pelanggan karena skrip tersebut harus dijalankan kembali kapan saja shapefile ditambahkan ke peta baru.
2

Rute termudah untuk diambil adalah dengan menyimpan HANYA geometri Anda sebagai shapefile, untuk kemampuan mengedit geometri yang sangat baik yang ada di banyak aplikasi GIS, BELUM menyimpan semua data bidang Anda (atau sebagian besar dari mereka) dalam sqlite sebagai tabel. Bergabunglah dengan mereka jika perlu untuk meneliti data lapangan Anda.

TETAPI Jika Anda perlu mengedit tabel saat melakukan permintaan spasial, atau memilih fitur shapefile di QGIS, Anda harus melupakan [shapefile yang bergabung dengan tabel sqlite] sebagai opsi, dan alih-alih mengekspor semuanya ke Spatialite. Belajar menggunakan Qspatialite dan Spatialite_GUI (keduanya gratis satu sama lain dengan banyak fitur yang tidak dimiliki - Anda akan perlu dan menggunakan keduanya jika Anda melakukan banyak hal dengan SQLITE)

Penting untuk diingat bahwa tabel tersebut (bergabung ke shapefile) tidak akan dapat diedit pada saat yang sama dengan bergabung. Dan bermigrasi ke Spatialite akan menjadi alternatif yang sangat baik untuk shapefile. Itu tetap dengan kesederhanaan dan portabilitas shapefile sambil menawarkan sebagian besar keutamaan database SQL, tanpa kompleksitas PostgreSQL.

pengguna12711
sumber
-2

Perbaikan sementara bisa, simpan sebagai file TAB, yang dapat memiliki nama kolom hingga 31 karakter.

Bharadwaj AK
sumber
1
tidak yakin ini benar-benar menjawab pertanyaan
nmtoken