การใช้ GeoDjango


9

เรากำลังสร้างเว็บไซต์ที่แสดงข้อมูลทางภูมิศาสตร์บนแผนที่ (ปัจจุบันใช้ Google Maps js API) ขณะนี้เราใช้ postgres + postGIS + php แนะนำให้ฉันดูการใช้งาน GeoDjango ฉันมีปัญหาในการพิจารณาว่าฟังก์ชันทางภูมิศาสตร์เพิ่มเติมใดที่ GeoDjango ให้ไว้เหนือสิ่งที่มีอยู่แล้วใน postGIS (เช่นจุด linestrings รูปหลายเหลี่ยมการคำนวณระยะทางการคำนวณพื้นที่ "ภายใน" ตรรกะ ฯลฯ )

GeoDjango มีฟังก์ชันการทำงานเพิ่มเติมหรือมีจุดประสงค์เพื่อลดความซับซ้อนในการใช้งานฟังก์ชันทางภูมิศาสตร์ที่มีอยู่หรือไม่

ขอบคุณ!

คำตอบ:


11

GeoDjango ยังมีคุณสมบัติที่เพิ่มมูลค่าอีกมากมาย

  • ไซต์ผู้ดูแลระบบที่เปิดใช้งาน Geospatially: นี่เป็นหนึ่งในคุณสมบัติที่ฉันโปรดปรานของ Django โดยทั่วไป Django สร้างหน้าผู้ดูแลระบบที่ดูดีโดยอัตโนมัติ GeoDjango ก้าวไปอีกขั้นและช่วยให้คุณสามารถดูและแก้ไขข้อมูลเชิงพื้นที่ได้อย่างง่ายดายโดยใช้แผนที่ Openlayers
  • ฟีด GeoRSS / GeoAtom: การสร้างฟีด GeoRSS / GeoAtom นั้นค่อนข้างง่าย
  • การสนับสนุน KML / GML / GeoJSON: GeoDjango รองรับการทำให้เป็นอนุกรม KML, GML และ GeoJSON แม้ว่าจะเป็นข้อจำกัดความรับผิดชอบฉันได้ทำ REST-API สองสามตัวกับ Django และพบว่าฉันไม่ได้ใช้ความสามารถในตัวใน GeoDjango สำหรับสิ่งนี้
  • ห้องสมุดบุคคลที่สาม: OLWidgets เป็นตัวอย่างของห้องสมุดบุคคลที่สามสำหรับ GeoDjango ที่ทำให้การสร้างแผนที่แบบโต้ตอบได้ง่ายขึ้น นอกจากนี้คุณยังสามารถเข้าถึงไลบรารี Python ได้หลากหลาย ตัวอย่างเช่นมีโครงการชื่อ Haystack ที่ให้ความสามารถในการค้นหาข้อความแบบเต็ม หากคุณกำลังใช้ดัชนีการค้นหาภายนอกเช่น Solr หรือ Elasticsearch คุณสามารถใช้ Django เพื่อค้นหาข้อความแบบเต็ม โดยส่วนตัวแล้ว Elasticsearch เป็นสิ่งทดแทน PostGIS ที่ยอดเยี่ยมสำหรับการค้นหาเชิงพื้นที่ มันไม่มีคุณสมบัติทั้งหมดของ Postgis แต่ใช้งานได้ดีสำหรับกรณีใช้งานส่วนใหญ่
  • มันทำให้ง่ายต่อการย้ายระหว่างฐานข้อมูลที่แตกต่างกัน ฉันเองใช้ GeoDjango กับ Spatialite และ Postgis

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


3

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

เกี่ยวกับอวกาศ

นอกจากนี้มันไม่ยากที่จะได้ผลลัพธ์ที่น่าพอใจมากขึ้นด้วยฟังก์ชั่นวรรคหนึ่ง รหัสนี้ให้วัตถุในรัศมี 5 กม.

qs = Events.objects.filter(point__distance_lte(pnt, D(km=5)))

ถ้าคุณต้องการได้รับข้อมูลเพิ่มเติมเกี่ยวกับ geodjango คุณสามารถตรวจสอบคำตอบของฉันที่นี่เกี่ยวกับหัวข้อเดียวกัน

ฉันหวังว่ามันจะช่วยคุณ ...


สิ่งที่คุณต้องมี=สัญญาณ:qs = Events.objects.filter(point__distance_lte=(pnt, D(km=5)))
ฟรานซิส Yaconiello
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.