ฉันใช้ QGIS 2.0.1 และกำลังเชื่อมต่อกับฐานข้อมูล MS SQL Server ที่เปิดใช้งานเชิงพื้นที่ (ไม่ใช่ ESRI) ฉันสามารถเชื่อมต่อกับเลเยอร์และโหลดลงใน TOC ของฉันได้ ฉันได้ซ่อนเขตข้อมูลจำนวนหนึ่งซึ่งไม่สำคัญสำหรับการมองเห็น
ตอนนี้ฉันต้องการส่งออกข้อมูลไปยังประเภทข้อมูลอื่น (เราจะใช้ shapefile สำหรับตัวอย่างนี้) เมื่อฉันคลิกขวาที่เลเยอร์เลือก "บันทึกเป็น" และกำหนดไฟล์ผลลัพธ์ฉันได้รับข้อผิดพลาดต่อไปนี้:
การส่งออกเป็นไฟล์เวกเตอร์ล้มเหลว ข้อผิดพลาด: ประเภทที่ไม่สนับสนุนสำหรับฟิลด์ GlobalID
หมายเหตุ 1 : ถ้าฉันทำเครื่องหมาย "ข้ามการสร้างแอททริบิวต์" ในกล่องโต้ตอบไฟล์รูปร่างจะถูกสร้างขึ้นโดยไม่มีข้อผิดพลาด
หมายเหตุ 2 : ArcGIS ไม่มีปัญหานี้เพียงแปลง GUID ฟิลด์เป็นประเภท "TEXT"
หนึ่งในฟิลด์ที่ฉันซ่อนไว้คือ GUID ของ SQL type < uniqueidentifier > ซึ่งเป็นผู้กระทำผิด ในความพยายามที่จะแก้ไขปัญหานี้ฉันสร้างฟิลด์ "ซ่อน" ฉันจะสันนิษฐานว่าเนื่องจากฟิลด์นั้นถูกซ่อน QGIS จะไม่พยายามส่งออกข้อมูลนี้ แต่กลับกลายเป็นว่าไม่ใช่กรณี
คุณสามารถกำหนดฟิลด์ที่คุณต้องการส่งออกจาก QGIS ได้หรือไม่?
เป็นไปได้หรือไม่ที่ QGIS จะส่งออกเฉพาะฟิลด์ "ที่มองเห็นได้" หรือมีวิธีอื่นในการทำเช่นนี้จาก QGIS (อาจกำหนดเขตข้อมูลผ่านแบบสอบถาม ogr2ogr) ดูเหมือนว่าจะเป็นข้อบกพร่องของ QGIS ถ้าฉันไม่สามารถกำหนดเขตข้อมูลที่จะส่งออกได้
UPDATE:ฉันทำการทดสอบโดยใช้ shapefile ตัวอย่างเพื่อดูว่าฉันสามารถ จำกัด ฟิลด์เอาต์พุตหรือไม่ บรรทัดคำสั่ง ogr2ogr ต่อไปนี้ทำงานและกำจัดฟิลด์ทั้งหมดยกเว้นสำหรับ "name":
ogr2ogr -f "ESRI Shapefile" test.shp city.shp -sql "select name from city"
แต่ใช้ QGIS และเพิ่ม:
-sql "select name from city"
ไปที่ส่วน "เลเยอร์" ของไดอะล็อก "บันทึกเป็น" ไม่ได้ส่งผลให้ shapefile มีเพียงฟิลด์เดียว ดังนั้นฉันจึงไม่เห็นวิธีที่ฉันสามารถจัดการกับเอาต์พุตไฟล์เพื่อแสดงเพียงไม่กี่ฟิลด์ ความช่วยเหลือใด ๆ ที่ชื่นชม
-sql "select <fields> from <table>"
(ยกเว้นเขตข้อมูล GlobalID จาก <fields>) ไปยังส่วน "เลเยอร์" ของกล่องโต้ตอบ "บันทึกเป็น" แต่ข้อผิดพลาดเดิมยังคงปรากฏขึ้น ฉันใช้บล็อกโค้ดนี้ในทางที่ผิดหรือเป็นข้อบกพร่องหรือไม่