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


12

องค์กรของเรากำลังพิจารณาที่จะย้ายเวิร์กโฟลว์การประมวลผลทางภูมิศาสตร์ไปยัง PostGIS ขณะนี้เรากำลังใช้ ArcGIS ด้วยเครื่องมือ Python ที่กำหนดเองมากมายที่ใช้ใน ModelBuilder เรากำลังย้ายข้อมูลส่วนใหญ่ของเราไปยัง PostGIS เพื่อการใช้งานแอพที่หลากหลายและตอนนี้เรากำลังถามว่ามันเหมาะสมที่จะทำการประมวลผลข้อมูลที่นั่นหรือไม่

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

สำหรับผู้ที่ใช้ PostGIS เพื่อทำการประมวลผลข้อมูลคุณมีคำแนะนำสำหรับองค์กรเครื่องมือในการใช้ ฯลฯ หรือไม่?

  • คุณใช้ร่วมกับการประมวลผลหลาม QGIS หรือไม่?
  • คนใช้ Python ORM สำหรับการประมวลผลที่ไม่ใช่เว็บ ฉันโน้มตัวไปใช้GeoDjangoเพราะมันมี Python ORM สำหรับ PostGIS การทดสอบเริ่มต้นของเราในการใช้ PostGIS เพื่อประมวลผลข้อมูลมีบล็อคข้อความ SQL ขนาดใหญ่จำนวนมากในรหัส Python และเราคิดว่า GeoDjango ORM อาจช่วยในการสร้างโค้ดที่จัดการและอ่านได้ง่ายขึ้น นอกจากนี้ยังมีGeoAlchemy ORM ที่ทำงานคล้ายกันกับ PostGIS และดูเหมือนจะไม่เป็นเว็บเฉพาะเช่น Django

ฉันไม่เคยได้ยินคนที่ใช้ PostGIS ทำโพรเซสซิงเท่าที่ฉันเห็นคนที่ใช้ QGIS หรือ ArcGIS ดังนั้นฉันจึงต้องการทราบว่าเป็นทางเลือกที่เปรียบเทียบได้หรือไม่


1
กระบวนการทั้งหมดของคุณเป็น "แบ็กเอนด์" หรือไม่? ฉันไม่ใช่ผู้ใช้ Django หรือ GeoDjango แต่ฉันคิดว่าผลิตภัณฑ์เหล่านั้นสำหรับการพัฒนาเว็บไซต์เท่านั้น (และปัญหามากกว่าที่พวกเขามีค่า IMHO) ทำไมไม่เพียงแค่เชลล์หรือสคริปต์ไพ ธ อนทำงานที่บรรทัดคำสั่ง (Unix แน่นอน) หรือเป็นระยะผ่าน "cron" (clickey-clickey น้อยในใจของฉันดีกว่าเสมอ) คุณอาจต้องการจัดระเบียบเหล่านี้อย่างเป็นระบบอย่างน้อยก็ด้วยการสตรีมข้อมูลขาเข้า นอกจากนี้ Postgis ยังสามารถเชือดและหั่นข้อมูลของคุณโดยไม่มี QGIS - คุณมีการดำเนินงานประเภทใดเป็นพิเศษ
forkandwait

1
ใช่การประมวลผลของเราคือแบ็กเอนด์ อย่างไรก็ตามในที่สุดเราก็จะมีแผนที่เว็บ OpenLayers ให้ลูกค้าดูและแก้ไขข้อมูลของพวกเขา เราอาจใช้ Django สำหรับบัญชีผู้ใช้และบัญชีผู้ดูแล ถ้าเป็นเช่นนั้นฉันคิดว่านั่นอาจเป็นอีกเหตุผลหนึ่งที่ทำให้ GeoDjango ทำการประมวลผลแม้ว่า Django จะถูกสร้างขึ้นสำหรับเว็บไซต์เป็นหลัก การประมวลผลขนาดใหญ่พร้อมการนำเสนอ Django ชี้ให้เห็นว่า Django ไม่ได้มีไว้สำหรับเว็บไซต์เท่านั้น: slideshare.net/dibau_naum_h/large-scale-processing-with-django
Tanner

1
สำหรับงานแบ็กเอนด์ฉันจะใช้ PostGIS, ogr2ogr ตัวเล็ก ๆ , ภาษาสคริปต์ (Python, Ruby, Tcl, อะไรก็ตาม) และบรรทัดคำสั่ง unix ฉันจะหลีกเลี่ยงการพยายามผสม Django เข้ากับสิ่งนั้นยกเว้นเพื่อให้ฐานข้อมูลของคุณเข้ากันได้มากที่สุด จากนั้นต่อมาวางส่วนหน้าไว้หากคุณต้องการ กฎของฉันคือ clickey = มีประสิทธิผลน้อยกว่า (แม้ว่านักวิเคราะห์ระบบสารสนเทศภูมิศาสตร์จะรู้สึกสะดวกสบายกับอึ clickey-clickey ... ฉันหมายถึง "อินเทอร์เฟซที่ใช้งานง่าย")
forkandwait

เกี่ยวกับสไลด์โชว์ - มันดูซับซ้อนอย่างบ้าคลั่งและอาจเหมาะสมถ้าคุณกำลังเก็บภาษีกำลังการผลิตของคุณที่พยายามตามให้ทัน
forkandwait

1
สองคำถามetlทั่วไปที่คุณอาจพบว่ามีประโยชน์: " การเปรียบเทียบ ETL เชิงพื้นที่ " และ " มีทางเลือก fme ที่ปลอดภัยหรือไม่ "
RyanKDalton

คำตอบ:


8

ฉันชอบใช้ PostGIS เพื่อวัตถุประสงค์ในการประมวลผลทางภูมิศาสตร์

resons หลักของฉันสองคือ:

1) บ่อยครั้งมากที่จะทำงานที่ซับซ้อนในฐานข้อมูลได้เร็วขึ้นเพราะคุณได้รับความช่วยเหลือจากนักวางแผนคิวรีเพื่อทำสิ่งต่าง ๆ ตามลำดับที่ถูกต้อง

2) เพียงบันทึกบรรทัด sql ที่คุณใช้ใน textfile และคุณมีเอกสารที่ดีมากในสิ่งที่คุณทำ

เวิร์กโฟลว์ของฉันหากงานเกี่ยวข้องกับ "ขั้นตอน" จำนวนมากที่ใช้เป็นสิ่งที่ต้องการ:
1- สร้างส่วนของแบบสอบถามหรือทั้งหมดขึ้นอยู่กับลักษณะของงาน
2- ทดสอบแบบสอบถามในส่วนเล็ก ๆ ของชุดข้อมูลเพื่อ ดูว่ามันทำงาน
อย่างไร 3- ทำการปรับแต่งบางอย่างถ้าจำเป็น
4- รันเคียวรีบนชุดข้อมูลทั้งหมด
5 - บันทึกบรรทัดในไฟล์ข้อความพร้อมโน้ตบางตัว
ทั้งหมดนี้มักจะเร็วพอ ๆ กับการเริ่มต้นใช้งาน ArcGIS และรอการอนุญาตจากเซิร์ฟเวอร์สิทธิ์การใช้งาน


5

เราใช้ PostGIS และสภาพแวดล้อมการเขียนโปรแกรม Python บางประเภทสำหรับบริการเว็บการประมวลผลจำนวนมากที่เราพัฒนาขึ้น ไม่มีข้อร้องเรียน!

GeoDjango เป็นตัวเลือกที่ยอดเยี่ยมหากคุณทำงานเป็นส่วนใหญ่ (หรือเฉพาะ) ด้วยคุณสมบัติสำหรับเว็บแอปพลิเคชัน ไม่รองรับประเภทข้อมูลแรสเตอร์ PostGIS หรือ PostGIS 2.0 มันมาโดยกำเนิดกับรุ่นล่าสุดของ Django ตอนนี้ คุณสามารถชดเชยการขาดการสนับสนุนแบบแรสเตอร์และความทนทานโดยรวมโดยใช้แบบสอบถาม SQL แบบกำหนดเองแบบดิบใน Django

สำหรับแอปพลิเคชันการประมวลผลทางภูมิศาสตร์ที่มีประสิทธิภาพมากขึ้นและโดยเฉพาะอย่างยิ่งหากคุณต้องการใช้แบบจำลองเชิงวัตถุให้ลองใช้ GeoAlchemy2 ไลบรารี GeoAlchemy ดั้งเดิมซึ่งขยาย SQLAlchemy ให้การสนับสนุนข้อมูลคุณลักษณะ GeoAlchemy2 ขยายโดยให้การสนับสนุน (จำกัด ) สำหรับประเภทข้อมูลแรสเตอร์ใหม่ใน PostGIS 2.0

จากนั้นจะมีการผูก Python สำหรับ GDAL และ OGR เสมอ!


YMMV แต่ฉันพบว่าไลบรารี่เชิงวัตถุไม่ได้เพิ่มอะไรลงไปใน SQL แบบธรรมดาจริงๆ ดังที่ฉันพูดในความคิดเห็นอื่นมันจะน่าสนใจที่สุดที่จะได้ยินเฉพาะ
forkandwait

4
ฉันสามารถอธิบายกรณีศึกษา: บริการเว็บสำหรับสร้างอินพุตแบบแรสเตอร์สำหรับแบบจำลองการพังทลายของไฟภายหลัง โดยทั่วไปจำนวนแรสเตอร์จำนวนหนึ่งจะต้องเป็นเซตย่อยและเพิ่มเข้าไปอีกอันหนึ่ง ฉันเลือก GeoAlchemy2 (GA2) เพื่อเชื่อมต่อกับ PostGIS ซึ่งเป็นที่จัดเก็บข้อมูล เมื่อใช้ GA2 ฉันสามารถสร้างแบบสอบถาม PostGIS ขนาดกะทัดรัดและใช้ซ้ำได้ ข้อความค้นหาหนึ่งสร้างผลิตภัณฑ์ "ครอบคลุมพื้นที่ที่ถูกไฟไหม้" (การจัดประเภทใหม่ของฝาครอบที่ดินชุดย่อย) ผลิตภัณฑ์นี้จำเป็นสำหรับใช้ในการสร้างแบบจำลองบางอย่าง แต่ยังถูกเพิ่มไปยังแรสเตอร์อื่นซึ่งเป็นชั้นดินเพื่อผลิตผลิตภัณฑ์ที่สาม GA2 ให้ฉันมิกซ์จับคู่และทำให้เป็นอนุกรมใน Python
อาเธอร์

3

แม้ว่าจะเป็นไปได้ แต่ก็ยากที่จะจินตนาการว่าคุณต้องการทำกระบวนการทางภูมิศาสตร์จำนวนมากภายในเอ็นจิ้นฐานข้อมูลหรือกรอบงานเว็บ ฉันขอแนะนำให้คุณดูไลบรารีโค้ดพื้นฐาน - geos, proj.4 และ gdal มีการผูกหรือไลบรารี Python สำหรับทั้งสาม ตัวเลือกอีกประการที่ควรพิจารณาคือปลั๊กอินทางภูมิศาสตร์ของ Sextante สำหรับ QGIS เนื่องจากอนุญาตให้สร้างโมเดล / เวิร์กโฟลว์

ความคิดอื่น ๆ :

อย่าออกกฎการใช้ PostGIS มันมีความสามารถในการเก็บข้อมูลและเซิร์ฟเวอร์ที่ดีและแสดงถึงการทำงานของ geos และ proj.4 บางอย่างผ่านทาง SQL นอกจากนี้ยังเล่นได้ดีกับเครื่องมืออื่น ๆ ที่กล่าวถึง: Django, QGIS และ Python

นอกเหนือจากการใช้ปลั๊กอิน Sextante ที่เป็นไปได้ดังกล่าวแล้ว QGIS นั้นดีสำหรับการสร้างภาพมีเครื่องมือบางอย่างสำหรับทำงานกับ postgres และยังมีคอนโซล Python

หากคุณกำลังมองหา ORM และต้องการส่วนหน้าเว็บ Django จะทำเช่นนั้น หากคุณไม่คำนึงถึงอินเทอร์เฟซน้อยกว่าเซ็กซี่หน้าผู้ดูแลระบบจะให้อินเทอร์เฟซ CRUD ที่มีความพยายามน้อย - แม้การแก้ไขรูปทรงเรขาคณิตถ้าคุณใช้ GeoDjango


2
แม้ว่าฉันจะยอมรับว่าจะไม่ใช้เฟรมเวิร์กของเว็บในการทำกระบวนการทางภูมิศาสตร์ แต่ฉันไม่เห็นด้วยอย่างยิ่งที่จะไม่ใช้ PostGIS (หรือเอนจิ้นฐานข้อมูลอื่น) เพื่อทำการประมวลผลทางภูมิศาสตร์ เราต้องการข้อมูลเฉพาะเพื่อก้าวไปข้างหน้าในการอภิปราย แต่ฉันทำการวิเคราะห์เชิงเรขาคณิต / การแบ่งส่วน / การแบ่งส่วนและจุดในโพลีจำนวนมากโดยใช้ PostGIS และ SQL
forkandwait

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

3

ดูที่ETLโดยเฉพาะFMEสำหรับการปฏิบัติการเชิงพื้นที่ (หรือGeoKettle โอเพ่นซอร์ส )

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

ข้อเสียเพียงอย่างเดียวของ FME คือค่าใช้จ่ายเงิน แต่ฉันคิดว่ามันคุ้มค่า

ทางเลือกในการใช้ FME น่าจะเป็น GDAL และ OGR พร้อมกับบางที Python ที่จะผูกมันเข้าด้วยกัน หรืออย่างที่คุณพูดทำทุกอย่างใน PostgreSQL ฉันคิดว่า ETL มีบทบาทที่สำคัญในการบิดเบือนข้อมูลเชิงพื้นที่และมีหลายสิ่งที่คุณไม่สามารถทำได้ในฐานข้อมูลของคุณ

ฉันไม่ได้ใช้ แต่ GeoServer ให้การใช้งานWPSฉันไม่ได้ใช้สิ่งนี้ แต่คนอื่น ๆ อาจแสดงความคิดเห็นว่าสิ่งนี้มีประโยชน์กับคุณอย่างไร

ฉันไม่สามารถแสดงความคิดเห็นเกี่ยวกับการใช้ GeoDjango แต่ฉันคิดว่ามันเป็น CMS มากขึ้นเช่นส่วนหน้าสำหรับการดูข้อมูล

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