(เมื่อใด) ฉันควรใช้ฐานข้อมูลที่เปิดใช้งาน GIS หรือไม่


22

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

แอปพลิเคชันที่ฉันต้องรับผิดชอบต่อโค้ดต้อง:

  • การจัดการยานพาหนะ (ยานพาหนะทางบกหรือทางทะเล)
  • ติดตามพนักงาน
  • การควบคุมสินค้าคงคลัง (ที่ระดับตำแหน่งทางกายภาพที่แม่นยำถึงหนึ่งเมตรหรือมากกว่านั้น)
  • ผิดที่เกี่ยวกับมันจริงๆ

ปกติแล้วฉันจะคาดหวังว่าจะติดตามสิ่งของไม่เกินหนึ่งร้อย (สูงสุดและอาจเป็นสองสามพัน) ไม่เกินรายการ บางครั้งรายการจะอยู่ในอาคาร (ใหญ่) เดียวกัน, ชุดอาคาร, เมือง, ประเทศหรือทั่วโลกขึ้นอยู่กับแอปพลิเคชัน

ฉันจะแสดงภาพเหล่านั้นเป็นครั้งคราวไม่ว่าจะเป็นแบบแปลนชั้นที่กำหนดเองของสิ่งปลูกสร้างหรือเป็นไปได้มากขึ้นใน Google Earth หรือสิ่งอื่นที่คล้ายคลึงกัน

ดูเหมือนว่าฉันเป็นอย่างดีกับ MySql และการเพิ่มคอลัมน์สำหรับ lat / long หรือข้อมูลตำแหน่งอื่น ๆ แต่นั่นอาจเป็นเพราะฉันรู้จัก MySql

มีเหตุผลใดบ้างที่ฉันควรดูฐานข้อมูลที่พิเศษกว่านี้?

คำตอบ:


13

ข้อได้เปรียบที่แท้จริงของฐานข้อมูลเชิงพื้นที่ (PostGIS, ส่วนขยายเชิงพื้นที่ไปยัง MySQL หรือสิ่งอื่น ๆ ) คือคุณสามารถดำเนินการเชิงพื้นที่กับข้อมูลเชิงพื้นที่ หากคุณเป็นเพียงการจัดเก็บพิกัดจุดแล้วคุณจะไม่ได้รับมากจากอวกาศ (เพียงใช้คอลัมน์ตัวเลขสองคอลัมน์) หากคุณเก็บชุดพิกัดจุด (ซึ่งลูกค้าอยู่) และพิกัดเส้น (จุดที่รถบรรทุกส่งมอบ) และรูปหลายเหลี่ยม (ภูมิภาคการขาย) จากนั้นให้สอบถามที่เกี่ยวข้องกับข้อมูลหลายบิตเหล่านั้น (จำนวนลูกค้าภายในการขาย โซนจำนวนรถบรรทุกที่เดินทางน้อยกว่า 2 กม. จากเว็บไซต์ลูกค้าในวันนี้ แต่ไม่ได้ทำการส่งมอบหรือรับสินค้า) คุณสามารถได้รับมาก

ดังที่ iant ระบุไว้ PostGIS นั้นคุ้มค่าที่จะมองหาแอพพลิเคชันเซิร์ฟเวอร์ SpatiaLite เป็นส่วนขยายเชิงพื้นที่สำหรับ SQLite ซึ่งอาจเหมาะสำหรับแอพพลิเคชั่นบนเดสก์ท็อป / ฝังตัว / ออฟไลน์ในขณะที่เสนอฟังก์ชัน SQL ที่คล้ายกันค่อนข้าง [การเปิดเผย: ฉันทำงานกับ SpatiaLite ] โดยสังเกตว่า แอปพลิเคชันเดสก์ท็อป


+1 และขอบคุณ curios เพียงแค่ว่าทำไมมันอยู่บนพื้นฐาน Sqlite และไม่ MySql ...
Mawg

1
ฉันคิดว่ามันเป็นเป้าหมายการออกแบบที่แตกต่าง (ฝังตัวไม่มีการกำหนดค่า ฯลฯ )
BradHards

+1 นั่นคือสิ่งที่ฉันคิด (ฉันมาจากพื้นหลังที่ฝังไว้ด้วย) ขอบคุณสำหรับข้อมูล. ฉันคาดหวังว่าฉันจะจบลงด้วยแอพที่ใช้เบราว์เซอร์ (พวกเราส่วนใหญ่จะชอบแม้ว่าเราจะไม่ชอบ) ดังนั้น "lite" จึงไม่จำเป็น เพียงแค่อยากรู้อยากเห็นแอพประเภทไหนที่ d / b อยู่ในระบบ / อุปกรณ์แบบฝัง? (ขออภัยยังคงเรียนรู้)
Mawg

1
ฝังตัวเป็นพื้นที่ขนาดใหญ่ แต่มือถือออฟไลน์ดูเหมือนจะเป็นพื้นที่ที่เกิดขึ้นใหม่
BradHards

2
@Mawg โทรศัพท์และเบราว์เซอร์ที่ทันสมัยส่วนใหญ่ใช้ sqlite เป็นที่เก็บข้อมูล มันเป็นไฟล์ c ไฟล์เดียวและ API นั้นง่ายมาก ๆ และมันรัน inprocess ตรงกันข้ามกับ MySQL ที่ต้องใช้หลายกระบวนการทำงานและสถาปัตยกรรมไคลเอนต์ / เซิร์ฟเวอร์ สองมากกรณีการใช้งานที่แตกต่างกัน
Ragi Yaser Burhum

8

แน่นอนคุณควรพิจารณาความนิยมอย่างสูงในทางที่ดีได้รับการสนับสนุนอย่างกว้างขวาง (และฟรี) PostGIS มันจะทำทุกสิ่งที่ MySQL สามารถทำได้และจัดการตำแหน่งเชิงพื้นที่เป็นวัตถุชั้นหนึ่ง ดังนั้นคุณสามารถทำการเลือกตามจุดที่มีในกล่อง bounding (หรือรูปหลายเหลี่ยมอื่น ๆ ) โดยไม่ต้องเขียนการเปรียบเทียบทั้งหมดเป็นต้น

เมื่อคุณเริ่มต้องถามคำถามว่าวัตถุใดอยู่ในประเทศใด (หรือสิ่งปลูกสร้าง) PostGIS จะเข้ามาเป็นของจริงและคุณควรตัดสินใจว่าคุณต้องทำแผนที่วัตถุของคุณจากนั้นเครื่องมือโอเพนซอร์สยอดนิยมทั้งหมดจะพูดคุยกับ PostGIS จาก กล่อง.


+1 และขอบคุณมาก ฉันออกไปดูตอนนี้ สร้างมุมมองโค้ดโคเดอร์ฉันต้องการเห็น hos เป็นอย่างดีและพูดถึง PHP ถ้าฉันใช้เว็บเบสและถ้าฉันไปที่แอพพลิเคชั่น Widnwos บนเดสก์ท็อปจากนั้นฉันใช้ AnyDac สำหรับการเข้าถึงฐานข้อมูลสำหรับ Delphi ขอบคุณอีกครั้ง!
Mawg

1
เพื่อ Mawg: ฉันยังคงต้องดู libs ฐานข้อมูลบุคคลที่สามเพื่อสนับสนุนการทำงานของ GIS ใด ๆ ใน postgis, db2, spatiallite, sql server เป็นต้นดูเหมือนว่าเป็นสิ่งที่คุณต้องทำด้วยตัวเอง
Uffe Kousgaard

+1 @UffeKousgaard ฉันพบที่ $ 295 สำหรับcartovcl.com ที่
Mawg

1
Cartovcl (ซึ่งฉันใช้มาเกือบ 10 ปี) เป็นไฟล์แบน GIS SDK ซึ่งมีฟังก์ชัน GIS ในตัว ไม่ใช่ API แบบ thin ที่ด้านบนของฐานข้อมูลระยะไกลที่เปิดใช้งานแบบกระจาย
Uffe Kousgaard

1
เอกสารทางประวัติศาสตร์ :-) แต่ TatukGIS น่าจะเป็นหนึ่งใน GIS SDK ที่ครอบคลุมทุกด้านมากที่สุด (แต่ก็แพงไปหน่อย) แต่มันอยู่ในลีกเดียวกันกับ cartovcl เช่น gis-functional นั้นมีอยู่แล้วภายในนั้นไม่ใช่ API ที่อยู่ด้านบนของฐานข้อมูลระยะไกล
Uffe Kousgaard

2

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

  1. จุดใดที่อยู่ภายใน x กิโลเมตรจากจุดที่น่าสนใจของฉัน
  2. จุดไหนที่ใกล้กว่า
  3. ไกลแค่ไหนจุดมาจากจุดอื่น
  4. จุดไหนคือ x กิโลเมตรภายในถนนทางเข้า

หากแบบสอบถามดังกล่าวที่เกี่ยวข้องกับ WHERE เป็นคุณลักษณะที่สำคัญสำหรับแอปพลิเคชันดังนั้นโดยทั่วไปจะแนะนำให้ใช้ฐานข้อมูลเชิงพื้นที่

แน่นอนว่าเราสามารถใช้วิธีการเข้ารหัส / แอปพลิเคชันสำหรับบางคำสั่งเช่นใช้สูตรระยะทางสำหรับ 1 แต่ไม่จำเป็นต้องบูรณาการล้อ

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