ข้ามขีด จำกัด 10 อักขระของชื่อฟิลด์ใน shapefiles หรือไม่


42

ฉันกำลังส่งออกรูปทรงเรขาคณิตที่มีแอตทริบิวต์ของข้อความที่แนบมาจากฐานข้อมูล oracle ไปยังรูปแบบ esri shapefile (.shp) ด้วยไลบรารี Java และ Geotools

คอลัมน์แอตทริบิวต์ในฐานข้อมูลของเรามีชื่อที่มีอักขระมากกว่า 10 ตัวและ Geotools บังคับให้ตัดทอน ฉันเข้าใจว่าเป็นเพราะข้อกำหนดไฟล์. shp หรือ. dbf

ฉันสามารถแก้ไขปัญหานี้ได้โดยการสร้างไฟล์ txt ง่ายๆด้วย "shrtname" = "ชื่อเต็มและยาว" แต่แน่นอนว่ามันจะไม่เข้าใจและนำเข้าโดยซอฟต์แวร์อื่นใดที่ไม่ใช่ของเรา

มีวิธีอย่างเป็นทางการในการทำแผนที่จากชื่อฟิลด์สั้นไปจนถึงชื่อเต็มยาวหรือไม่?

ตัวอย่างเช่นไฟล์ xml ถัดจากไฟล์. shp .dbf .shx อื่น ๆ ทั้งหมด

คำตอบ:


53

ขออภัยคำตอบคือไม่ คุณต้องแผ่ออก mapper ภาคสนามของคุณเองและซอฟต์แวร์เฉพาะที่ใช้ mapper ของคุณจะเข้าใจมัน คุณสามารถใช้รูปแบบอื่น ๆ ที่ไม่มีข้อ จำกัด นี้ได้ (เช่นไฟล์ฐานข้อมูลทางภูมิศาสตร์, พื้นที่ ฯลฯ )


คำแนะนำบางประการเกี่ยวกับการแก้ไขปัญหาจากประสบการณ์ส่วนตัว

เมื่อผู้คนเลือกรูปร่างของไฟล์ (และยืนยันกับพวกเขา) เป็นรูปแบบหลักของพวกเขามันมักจะถูกเลือกสำหรับการทำงานร่วมกัน - คิดว่ามันเป็นไปตามข้อกำหนด หากคุณเลือกที่จะม้วน mapper สนามของคุณเองคุณกำลังทำสิ่งที่ตรงกันข้าม - เนื่องจากคุณทำสิ่งนอกสเปค - คุณได้สร้าง "สเป็คเสริม" ของคุณ

ฉันเคยทำสิ่งนี้ในอดีตหรือไม่ ใช่. และแน่นอนที่สุดจะเปลี่ยนเป็นความเจ็บปวดมากกว่าการแก้ปัญหาเพราะทุกครั้งที่คุณพยายามเปิด shapefiles ให้เป็นอย่างอื่นที่สามารถอ่าน / เขียนรูปร่างไฟล์ได้คุณจะจบลงด้วยโต๊ะที่มีสาขาที่เข้าใจยาก .

ณ จุดนี้ฉันจะถามคุณว่าทำไมคุณถึงใช้ shapefiles? อาจเกิดขึ้นกับโซลูชันเวิร์กโฟลว์ที่ยึดกับข้อมูลจำเพาะรูปร่างและข้อ จำกัด หรือเปลี่ยนรูปแบบไฟล์ ทุกอย่างเป็นเพียงสูตรสำหรับอาการปวดหัว


โชคไม่ดีที่ลูกค้าของเราต้องการ
รูปร่าง

ไม่มีตัวเลือกอื่น :(
Ragi Yaser Burhum

1
ตัวเลือกอื่น ๆ คือวิธีแก้ไขปัญหาซึ่งมีบางข้อแนะนำด้านล่าง

ฉันอัปเดตคำตอบของฉันด้านบนเพื่ออธิบายว่าทำไมการแก้ไขปัญหาจึงเป็นความคิดที่ไม่ดีเมื่อลูกค้าของคุณต้องการรูปทรง
Ragi Yaser Burhum

6
ในฐานะที่ปรึกษาที่ปรึกษาประสบการณ์ของฉันคือการหาวิธีที่จะช่วยให้ลูกค้ามักจะชอบพูดว่า "ไม่มีทางที่จะทำได้" การค้นหาสาเหตุที่พวกเขาต้องการ Shapefiles เป็นการเริ่มต้นที่ดีและคุณอาจเห็นด้วยกับทางเลือกอื่น แต่นั่นไม่ได้เป็นเช่นนั้นเสมอไป วิธีที่ดีที่สุดวิธีหนึ่งในการรับแนวคิดสำหรับการแก้ไขปัญหาคือการโพสต์ประกาศบนเว็บที่ระบุว่า "ไม่มีตัวเลือกอื่น" :-)
whuber

16

มีวิธีมาตรฐานในการจัดการกับสิ่งนี้แม้ว่าลูกค้าของคุณอาจจะไม่พอใจอย่างสมบูรณ์: คุณส่งออกสองไฟล์, ไฟล์รูปร่างและไฟล์ข้อมูลในรูปแบบที่ซอฟต์แวร์สามารถอ่านได้ Shapefile มีเพียงตัวระบุเฉพาะ [Id] สำหรับแอตทริบิวต์ ไฟล์ข้อมูลมีหลายแอตทริบิวต์: [Id] เพื่อให้ตรงกับรูปร่าง [Field] เพื่อให้ชื่อฟิลด์ [Type] เพื่อระบุประเภทของมันและหนึ่งแอตทริบิวต์ของแต่ละชนิดข้อมูลที่เป็นไปได้เพื่อเก็บค่า แต่ละฟิลด์ในไฟล์ต้นฉบับจะถูกจัดเก็บเป็นเรคคอร์ดในไฟล์ข้อมูลนี้

ตัวอย่างเช่นตารางต้นฉบับที่มีลักษณะดังนี้:

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

จะมีไฟล์ข้อมูลที่สอดคล้องกัน

[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

ควรชัดเจนว่าจะใช้ข้อมูลเหล่านี้ใน RDBMS ใดและวิธีการแปลงไปมาระหว่างสองรูปแบบ


7

หากลูกค้าของคุณใช้ ArcGIS คุณสามารถให้สคริปต์เพื่อนามแฝงฟิลด์กำหนดในกลุ่ม สิ่งนี้จะทำให้พวกเขามีลักษณะของชื่อเขตยาวเมื่อพวกเขากำลังใช้ข้อมูล

การเขียนสคริปต์ที่คล้ายกันอาจช่วยให้นามแฝงในแพ็คเกจ GIS อื่น ๆ ได้เช่นกัน


4
แน่นอนว่าฉันยินดีที่ได้เห็นคำตอบข้อหนึ่งของฉันซึ่งถือเป็นเรื่องดี แต่คำตอบนั้นนำไปใช้กับฐานข้อมูล Geod ไม่ใช่เพื่อการเรียงไฟล์ พวกเขาไม่สามารถถือนามแฝงได้ แต่ใน Arcgis เราสามารถบันทึกไฟล์เลเยอร์ซึ่งจดจำนามแฝงได้
matt wilkie

ตั้งข้อสังเกตและขอขอบคุณสำหรับการชี้แจง โปรดทราบว่านามแฝงสามารถบันทึกด้วย MXD ได้เช่นกัน ฉันแนะนำว่าควรให้สคริปต์แก่ลูกค้าเนื่องจากจะต้องเรียกใช้อีกครั้งเมื่อใดก็ตามที่มีการเพิ่มรูปร่างลงในแผนที่ใหม่

2

เส้นทางที่ง่ายที่สุดที่จะใช้คือการจัดเก็บรูปทรงเรขาคณิตของคุณเป็นไฟล์รูปร่างเท่านั้นเพื่อความสามารถในการแก้ไขรูปทรงเรขาคณิตที่ยอดเยี่ยมที่มีอยู่ในแอปพลิเคชั่น GIS จำนวนมาก YET เก็บข้อมูลฟิลด์ทั้งหมดของคุณ เข้าร่วมพวกเขาตามความจำเป็นเพื่อศึกษาข้อมูลภาคสนามของคุณ

แต่ถ้าคุณต้องการแก้ไขตารางในขณะที่ทำการสืบค้นเชิงพื้นที่หรือเลือกคุณสมบัติ shapefile ใน QGIS คุณจะต้องลืม [Shapefiles เข้าร่วมกับตาราง sqlite] เป็นตัวเลือกแทนการส่งออกทุกอย่างไปยัง Spatialite เรียนรู้การใช้ Qspatialite และ Spatialite_GUI (ทั้งคู่มีอิสระซึ่งกันและกันด้วยฟีเจอร์มากมายที่ไม่มีคุณสมบัติอื่น ๆ - คุณจะต้องใช้และใช้ทั้งสองอย่างถ้าคุณทำหลายสิ่งด้วย SQLITE)

สิ่งสำคัญที่ต้องคำนึงถึงตารางเหล่านั้น (เข้าร่วมกับ shapefile) จะไม่สามารถแก้ไขได้ในเวลาเดียวกับการเข้าร่วม ดังนั้นการโยกย้ายไปยัง Spatialite จึงเป็นทางเลือกที่ยอดเยี่ยมสำหรับรูปร่างของไฟล์ มันยังคงความเรียบง่ายและพกพาได้ของ shapefiles ในขณะที่ให้คุณประโยชน์ส่วนใหญ่ของฐานข้อมูล SQL โดยไม่มีความซับซ้อนของ PostgreSQL


-2

การแก้ไขชั่วคราวสามารถทำได้โดยบันทึกเป็นไฟล์ TAB ซึ่งสามารถมีชื่อคอลัมน์ได้ยาวถึง 31 อักขระ


1
ไม่แน่ใจว่านี่เป็นคำตอบของคำถามจริงๆหรือไม่
nmtoken
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.