กำลังอ่านการเชื่อมต่อ ODBC โดยใช้ QGIS? [ปิด]


16

ฉันมีเพื่อนร่วมงานที่จัดการฐานข้อมูล MS Access ขนาดใหญ่ที่มีเขตข้อมูล X & Y สำหรับสถานที่ต่างๆที่เขาติดตาม ก่อนหน้านี้เราได้ส่งออกข้อมูลไปยัง CSV และใช้ปลั๊กอินข้อความ QGIS Delimited เพื่อพล็อตสถานที่

ตอนนี้เราต้องการพล็อตข้อมูลนี้โดยตรงใน QGIS โดยเชื่อมต่อกับ MS Access db ผ่านการเชื่อมต่อ ODBC (ตรงข้ามกับการส่งออกเป็น CSV)

  1. QGIS สามารถใช้ข้อมูลจากการเชื่อมต่อ ODBC เพื่อลงจุดที่ตั้ง XY ได้หรือไม่?
  2. มันสามารถ "เชื่อมโยงสด" กับการเชื่อมต่อ ODBC เพื่อให้เมื่อโครงการเปิดอีกครั้งเลเยอร์ "replots" สถานที่เก่าและเพิ่มใหม่ทั้งหมดแบบไดนามิก (ตรงข้ามกับการส่งออกไปยังรูปร่างไฟล์ซึ่งจะสร้างภาพรวมในเวลา)?
  3. คุณสามารถสร้างการเชื่อมต่อ ODBC แบบตารางที่สามารถเข้าร่วมกับตารางอวกาศภายใน QGIS ได้หรือไม่?

คุณสามารถทำสิ่งนี้ได้ในเครื่องมือ ArcGIS ("เพิ่ม XY Data") ดังนั้นมันจะดีมากถ้าความสามารถนี้มีอยู่ใน QGIS ฉันไม่พบที่ใดก็ได้ที่กล่าวถึงการมีอยู่ของมัน

ฉันไม่ได้วางแผนที่จะย้ายไปยังฐานข้อมูลเชิงพื้นที่ ในฐานะบุคคล GIS เองฉันรู้ว่าเหมาะสมที่จะย้ายไปยังฐานข้อมูลเชิงพื้นที่และใช่ฉันใช้ PostGIS เพื่อจัดการข้อมูลประเภทนี้ แต่ตอนนี้ไม่ใช่ตัวเลือกตอนนี้ ผู้ใช้ไม่ใช่บุคคล GIS และไม่ต้องการและเขาจัดการฐานข้อมูลของตัวเองใน MS Access และนั่นจะไม่เปลี่ยนแปลง ฉันและเขากำลังดึงเขาเตะและส่งเสียงกรีดร้องสู่โลกของ GIS และต้องการทำให้มันง่ายที่สุด เขาสามารถอยู่กับการส่งออกเป็น CSV ฉันแค่หวังว่าจะมีทางออกที่ดีกว่าโดยใช้ ODBC สำหรับการเข้าถึง MSและแสดงข้อมูล XY ใน QGIS


จากความรู้ของฉันคุณไม่สามารถทำตามที่คุณถามกับ QGIS ฉันยอมรับว่าจะมีการใช้งานบางอย่างใน ODBC เทียบเท่ากับการนำเข้า CSV แต่สำหรับการทำงานทุกประเภทมันจะต้องมีการนำเข้ามากกว่าการเชื่อมต่อแบบไดนามิก - เช่นเดียวกับปลั๊กอิน CSV ดังนั้นจึงไม่มีโอกาสที่จะเกิดขึ้นหากคุณไม่สนับสนุนหรือพัฒนาด้วยตนเอง
MerseyViking

@ MV- โดยปกติฉันเห็นด้วยกับคุณและดูคะแนนของคุณ อย่างไรก็ตามสำหรับผู้ใช้ที่ไม่ใช่ระบบสารสนเทศที่มีความสนใจในการทำแผนที่ข้อมูลของพวกเขาและไม่วิเคราะห์ข้อมูลประสิทธิภาพของ QGIS จะไม่เป็นประเด็นสำคัญ ฉันคิดว่าการมีการเชื่อมต่อแบบไดนามิก "อยู่เสมอ" กับข้อมูลของพวกเขาเกือบจะแน่นอนเกินความกังวลด้านประสิทธิภาพ (คิดอีกครั้งจากมุมมองของผู้ใช้ที่ไม่ใช่ GIS)
RyanKDalton

คำตอบที่ดีที่จะเป็นคำถามที่ใกล้เคียงที่QGIS 2.4 การเข้าถึง .mdb เพิ่มข้อผิดพลาด
RyanKDalton

คำตอบ:


7

Caveat: ฉันไม่ได้ลองสิ่งนี้ดังนั้นฉันยินดีที่จะคำนับทุกคนที่มีประสบการณ์โดยตรง

คุณสามารถเชื่อมต่อกับแหล่งข้อมูล ODBC ในกล่องโต้ตอบ "เพิ่มเวกเตอร์เลเยอร์" เพียงแค่เลือก "ฐานข้อมูล" เป็นประเภทแหล่งที่มาและ ODBC เป็นประเภทฐานข้อมูล QGIS ใช้ไดรเวอร์ ODBC สำหรับ OGRดังนั้นจะใช้คำเตือนเดียวกัน - นั่นคือคุณจะต้องมีตารางชื่อ GEOMETRY_COLUMNS และอื่น ๆ ดังนั้นเพื่อนร่วมงานของคุณอาจจำเป็นต้องแก้ไขฐานข้อมูล

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


@ MV- นี่เป็นข้อมูลที่ดีที่ควรมี ฉันไม่ทราบว่าคุณสามารถเพิ่มข้อมูลแบบตารางผ่านตัวเลือก "เพิ่มเวกเตอร์เลเยอร์" แม้ว่าคุณจะถูกต้องเนื่องจากยังไม่ได้เปิดใช้งานเชิงพื้นที่คุณจะต้องส่งออกไปยังรูปแบบเชิงพื้นที่ และคุณพูดถูกผู้ใช้จะไม่เปลี่ยนไปใช้ฐานข้อมูลที่เปิดใช้งานเนื่องจากพวกเขาไม่ใช่ GIS หรือฐานข้อมูล พวกเขามีการฝึกอบรมการเข้าใช้ที่เพียงพอที่จะเป็นอันตราย ...
RyanKDalton

7

ด้วยเครื่องมือ "การประมวลผล" ใหม่ที่มีอยู่ใน QGIS 2 สิ่งนี้จะกลายเป็นเรื่องง่ายขึ้นเล็กน้อย ในขณะที่ฉันยังไม่พบวิธีในการ "เชื่อมโยงสด" ข้อมูล (ดังนั้นหากคุณเปลี่ยนค่าในตาราง MS Access จุดย้ายโดยอัตโนมัติ) วิธีนี้ดูเหมือนว่าจะทำงานได้ค่อนข้างดี

เครดิตไปที่ "Christina" และ "Bernd" ในส่วนความเห็นของหน้านี้ (และแน่นอน @underdark สำหรับบล็อก) สำหรับวิธีสร้างการเชื่อมต่อ ODBC ไปยังฐานข้อมูล MS Access ของคุณ:

สร้างการเชื่อมต่อ ODBC:

สำหรับ Win7, 32 บิต:ไปที่แผงควบคุม / เครื่องมือการบริหาร / แหล่งข้อมูล (ODBC)

สำหรับ Win7, 64 บิต:แทนที่จะใช้“ แผงควบคุม / เครื่องมือการดูแลระบบ / แหล่งข้อมูล (ODBC)” เริ่มต้น - วิธีด้วยรุ่น 64 บิตคุณต้องใช้ C: \ Windows \ SysWOW64 \ odbcad32.exe!

  1. คลิกที่แท็บ DSN ของผู้ใช้จากนั้น 'เพิ่ม'
  2. เลื่อนลงไปที่ Microsoft Access Driver (* mdb) และคลิก 'เสร็จสิ้น'
  3. ตั้งชื่อการเชื่อมต่อจากนั้นเลือก 'เลือก' เพื่อเรียกดูตำแหน่งของฐานข้อมูลจากนั้นคลิก 'ตกลง' เพื่อออกจากการสนทนาและอีกครั้งเพื่อปิดหน้าต่าง dsn

โหลดเลเยอร์ลงใน QGIS:

  1. ไปเพื่อเพิ่มเลเยอร์เวกเตอร์และเลือกตัวเลือกฐานข้อมูล
  2. ตรวจสอบให้แน่ใจว่ากล่อง 'type' ฐานข้อมูลระบุว่า 'ODBC' และคลิก 'ใหม่'
  3. ในกล่องชื่อพิมพ์ชื่อสำหรับการเชื่อมต่อ
  4. โฮสต์คือ localhost
  5. ชื่อฐานข้อมูลคือชื่อของ dsn ที่คุณสร้างในขั้นตอนที่ 4
  6. ช่องอื่น ๆ ทั้งหมดควรจะว่างเปล่า แต่คุณสามารถทำเครื่องหมายที่ช่อง 'บันทึกรหัสผ่าน'
  7. ทดสอบการเชื่อมต่อและจดบันทึกข้อผิดพลาดใด ๆ เมื่อทำสำเร็จให้คลิก 'ตกลง' เพื่อกลับไปที่กล่องโต้ตอบ 'เพิ่มเวกเตอร์เลเยอร์'
  8. คลิก 'เปิด' เพื่อเปิดการเชื่อมต่อนี้และถ้าถามรหัสผ่านคลิก 'ตกลง' เลือกเลเยอร์ของคุณ (ตารางจากฐานข้อมูล) โปรดทราบว่าอาจไม่มีรูปทรงเรขาคณิต

แปลงข้อมูล XY เป็นคะแนน:

  1. ด้วยตารางใน TOC ให้ไปที่ "กำลังประมวลผล" -> กล่องเครื่องมือ -> Geoalalms -> เวกเตอร์ -> การสร้าง -> "เลเยอร์จุดจากตาราง"
  2. กรอกแบบฟอร์มตามที่ปรากฏด้านล่าง:

แต้มเลเยอร์จากตาราง


หากคุณกำลังมีปัญหากับวิธีการนี้ให้ตรวจสอบQGIS 2.4 การเข้าถึง .mdb เพิ่มข้อผิดพลาด
RyanKDalton

ขอบคุณมากสำหรับความช่วยเหลือในการเชื่อมต่อ ms เข้าถึง QGIS ฉันใช้รหัสตัวอักษรสามประเทศเป็นเลเยอร์การเข้าร่วมและใช้งานได้ดีมาก

ถ้าฉันมีตารางที่มี Line หรือ Polygon ฉันจะสร้างแผนที่ได้อย่างไร
MichaelR

5

ในขณะที่ผมกำลังสนใจยังคงอยู่ในการได้ยินถ้ามีตัวเลือกอื่น ๆ ที่มีผมไม่เจอโพสต์ข้อความที่กล่าวถึงนี้เป็นไปได้โดยใช้ปลั๊กอิน Evis

เอกสารอธิบายในส่วนการเชื่อมต่อฐานข้อมูลวิธีที่คุณสามารถเชื่อมต่อกับการเชื่อมต่อ MS Access หรือ ODBC เพื่อสร้างตำแหน่งจุด XY จากฐานข้อมูลโดยไม่ต้องสร้างสแนปชอตแบบสแตติก ฉันเพียงแค่พิมพ์ "select * from" และ eVis โผล่กล่องโต้ตอบที่ถามชื่อเลเยอร์และฟิลด์ XY

น่าเสียดายที่เรื่องนี้ดูเหมือนจะไม่สร้างการเชื่อมต่อ "เชื่อมโยงสด" กับฐานข้อมูล MS Access เพราะในครั้งต่อไปที่โครงการเปิดขึ้น QGIS จะสับสน ("ไม่สามารถเปิดเลเยอร์โครงการหนึ่งชั้นหรือมากกว่า") อย่างไรก็ตามวิธีแก้ไขปัญหานี้คือการสร้างแบบสอบถาม XML ที่กำหนดไว้ล่วงหน้าที่ผู้ใช้สามารถเลือกได้

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


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

@ MV- จากสิ่งที่ฉันสามารถบอกได้ผ่านการทดลอง eVis ดูเหมือนจะสร้างเลเยอร์แคชใน QGIS ตัวอย่างเช่นหลังจากที่ฉันโหลดเลเยอร์ด้วย eVis ฉันจะลบหนึ่งในระเบียนจากฐานข้อมูล Access หน้าจอ QGIS ที่รีเฟรชและจุด "ลบ" ยังคงอยู่ แต่เมื่อฉันสร้างเลเยอร์แคชใหม่จุดที่ถูกลบจะไม่ปรากฏ (ตามที่คาดไว้) การแพนและซูมไม่มีผลต่อการแสดงเลเยอร์แคช
RyanKDalton

4

อีกวิธีหนึ่งที่จะย้ายข้อมูลไปยัง postgis คุณสามารถอ่านไฟล์ csv โดยตรงได้ด้วยคำสั่ง postgresql จากนั้นคุณสามารถสร้างคะแนนจากฟิลด์ xy

ถ้าคุณต้องการใช้รายงานหรือ funtionality อื่น ๆ ในการเข้าถึงคุณสามารถเชื่อมต่อกับ postgis จากการเข้าถึง

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

มีบทเรียนที่ยอดเยี่ยมสำหรับ postgis / postgresql เพื่อเข้าถึงการเชื่อมต่อใน postgresonline.com บทเรียนเกี่ยวกับการนำเข้าสู่ postgis / postgresql คุณสามารถค้นหาโดยผู้เขียนคนเดียวกันที่ bostongis.org

/ Nicklas


0

มีผลิตภัณฑ์สำหรับการแปลงหลายชนิดซึ่งสามารถแปลงข้อมูล ms-access เป็น postgres หรือ SQLite และกลับมาอีกครั้ง การย้ายข้อมูลอย่างรวดเร็วจากด้านหนึ่งไปอีกด้านหนึ่ง การใช้หนึ่งในแอปพลิเคชันเหล่านี้อาจให้ตัวเลือกในการรัน QGIS บนภาพรวมของข้อมูล


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