วิธีสร้าง front-end แบบง่ายสำหรับฐานข้อมูล PostGIS


21

องค์กรของฉันเก็บรวบรวมข้อมูลการตรวจสอบด้านสิ่งแวดล้อมจำนวนมาก (กระแสการไหลของน้ำเคมี ฯลฯ ) ซึ่งส่วนใหญ่จะถูกเก็บไว้ใน Excel ฉันต้องการนำทุกอย่างลงในฐานข้อมูล - อาจเป็น PostGIS - แต่ฉันต้องการข้อมูลเพื่อให้ผู้คนที่ไม่มีความรู้ในเรื่องการจัดทำดาต้าเบส (ไม่มี SQL หรืออะไรทำนองนั้น)

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

นี่เป็นเรื่องยากเพียงไรและตัวเลือกต่าง ๆ ของฉันคืออะไร? ฉันไม่ใช่ผู้เชี่ยวชาญด้านการจัดเก็บข้อมูล แต่อย่างใด แต่ฉันมีพื้นหลังที่มั่นคงใน Desktop GIS และฉันดีใจที่ได้เขียนสคริปต์ Python และเล่นกับฐานข้อมูล PostGIS, SpatiaLite และ ESRI ส่วนบุคคล ฉันไม่เคยทำการพัฒนาเว็บไซต์หรือเว็บ GIS ใด ๆ เลย แต่ฉันกระตือรือร้นที่จะเรียนรู้

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

คำถามของฉัน:ฉันควรคิดถึงโครงสร้างซอฟต์แวร์ประเภทใดสำหรับโครงการเช่นนี้ เช่น

PostGIS + GeoServer + Something else?

มีตัวเลือกอื่น ๆ อะไรบ้างที่ฉันควรทำการวิจัย

วิธีแก้ปัญหาที่เรียบง่าย แต่ใช้งานได้จะเป็นที่ต้องการในตอนแรก: ถ้าฉันสามารถรวบรวมต้นแบบพื้นฐานฉันสามารถใช้มันเพื่อปรับการใช้เวลาเรียนรู้วิธีการทำสิ่งต่าง ๆ “ ถูกต้อง” โอเพ่นซอร์สนั้นเป็นข้อกำหนดเพราะฉันไม่มีงบประมาณสำหรับเรื่องนี้จนกว่าฉันจะพิสูจน์ได้ว่ามีประโยชน์

ขอบคุณมาก ๆ!


2
หากคุณออกไปจากแผนที่คุณสามารถทำสิ่งเหล่านี้ได้ทั้งหมดด้วย Apache และ PHP คุณจะต้องสร้างรูปแบบการป้อนข้อมูลเดียวสำหรับสคริปต์ PHP ที่ดึงข้อมูลจาก PostGIS (คุณสามารถแทนที่ PHP ด้วย Python ได้) ... แต่นี่ไม่ใช่คำถามสำหรับ GIS.SE
underdark

ขอบคุณมากสำหรับทุกคนที่ตอบกลับ! ทั้งหมดนี้เป็นคำตอบที่เป็นประโยชน์และคุณได้ให้ข้อมูลมากมายแก่ฉันในการติดตาม ฉันต้องการที่จะ "ยอมรับ" พวกเขาทั้งหมด แต่ฉันได้ให้คะแนนแก่ @canisrufus เนื่องจากฉันพบว่าย่อหน้าสุดท้ายของเขามีประโยชน์มากและฉันไม่เคยเจอ web.py มาก่อน GeoDango ก็ดูยอดเยี่ยมเช่นกัน ไชโย!
JamesS

@ jamesS ฉันกำลังจะขยายย่อหน้าสุดท้ายของฉัน แต่มันเริ่มดูเหมือนผิดหัวข้อ หากคุณมีคำถามหรือต้องการพูดคุยกันนานขึ้นเกี่ยวกับวิธีการตั้งค่าคุณสามารถกดฉันคุยกันได้ที่นี่
canisrufus

@JamesS มีความคืบหน้าอะไรบ้าง? ทำงานกับ topis เดียวกันฉันเพิ่งเริ่มพัฒนาโครงการ Django
Luca Moiana

สวัสดี @Luca Moiana ในฐานะต้นแบบฉันทำตามคำแนะนำในคำตอบที่ยอมรับด้านล่างโดยใช้ web.py, Apache และ PostGIS (แต่เว็บไซต์ของฉันไม่ได้รวมแผนที่ไว้ท้าย) ไม่กี่ปีที่ผ่านมาเราได้นำระบบสารสนเทศทางอุทกวิทยาของ CUAHSIมาใช้ซึ่งยอดเยี่ยมมาก ใช้เวลาตั้งค่าเล็กน้อย แต่มีเครื่องมือหลากหลายสำหรับจัดเก็บค้นหาสำรวจวิเคราะห์และแสดงผลข้อมูลสิ่งแวดล้อม
JamesS

คำตอบ:


13

ถ้าคุณรู้วิธีของคุณเกี่ยวกับ Python และ SQL อยู่แล้วคงไม่ยากเกินไปที่จะสร้างเว็บไซต์โดยใช้ Python Web Framework สองวิอย่างง่ายคือ cherry.py และ web.py ฉันคิดว่าการเรียนรู้วิธีของคุณเกี่ยวกับผู้ทำแผนที่วัตถุเชิงสัมพันธ์ของ Django อาจทำงานได้มากกว่าที่ควรค่า

Python มีไลบรารี่ที่ชื่อ psycopg2 (http://initd.org/psycopg/ และแบบฝึกหัด: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ) ซึ่งช่วยให้คุณเรียกใช้คิวรีกับ PostGRESQL / PostGIS ได้อย่างง่ายดาย นอกจากนี้ยังมีโมดูล CSV (http://docs.python.org/library/csv.html) ซึ่งจะทำให้การสร้าง CSV ของคุณเป็นเรื่องง่าย

อย่างที่คนอื่น ๆ พูดการสร้างแผนที่ที่ส่วนหน้าเพิ่มความซับซ้อนของรีม คุณจะต้องมีสิ่งใดอย่าง OpenLayers เพื่อแสดงแผนที่และอย่าง MapServer หรือ GeoServer เพื่อสร้างภาพแผนที่จากฐานข้อมูลของคุณ (หรือแหล่งข้อมูลอื่น ๆ ) นั่นอาจจะดีกว่าเป็นขั้นตอนที่สอง

สำหรับตอนนี้ "ทั้งหมด" ดูเหมือนว่าคุณต้องการคือหน้าเว็บเดียว: แบบฟอร์มที่ให้คุณเลือกว่าตัว paremeters แบบสอบถามใดที่คุณต้องการ พวกเขากด "ส่ง" พารามิเตอร์แบบสอบถามจะถูกส่งไปยังเซิร์ฟเวอร์ (Apache จะเป็นตัวเลือกที่ดี) ซึ่งจะเรียกใช้สคริปต์ของคุณซึ่งสอบถามฐานข้อมูลสร้างไฟล์ CSV ที่เหมาะสมและส่งกลับไปยังเบราว์เซอร์ ง่ายเหมือนพี;)


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

@mr_chimp โอ้นั่นเป็นจุดที่ดี ความกังวลของฉันเป็นเลเยอร์พื้นหลัง แต่เราสามารถใช้ Google แผนที่หรือ OSM หรืออื่น ๆ ได้จริง ๆ แล้วฉันมักจะคิดว่าเลเยอร์เวกเตอร์นั้นเป็นโซลูชันที่ดีกว่า (สำหรับผู้ใช้) แต่เมื่อคุณชี้ให้เห็นว่ามีข้อ จำกัด และแน่นอนวิธีที่ง่ายที่สุดในการถ่ายโอนเวกเตอร์ก็คือมี MapServer หรือ GeoServer ให้บริการ);
canisrufus

เช่นเคยเป็นกรณีของการใช้เครื่องมือที่เหมาะสมสำหรับงาน ในขณะที่ JamesS มีฐานข้อมูล PostGIS อยู่แล้วเขาก็อาจคว้าข้อมูลได้จากตรงนั้น เว้นแต่ฉันจะลืมบางสิ่งบางอย่างการตั้งค่า MapServer / อะไรก็ตามที่เป็นเพียงขั้นตอนเพิ่มเติม (โดยปกติแน่นอนว่ามันจะเป็นวิธีที่เร็วที่สุด)
Mr_Chimp

8

GeoDjango

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


5

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

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

หาก / เมื่อคุณต้องการทำส่วนการทำแผนที่ Apache, GeoServer และ OpenLayers จะเป็นวิธีที่ง่ายและฟรี GeoServer (เท่าที่คุณทราบ) สามารถใช้ PostGIS สำหรับ WMS หรือรูปแบบเอาต์พุตอื่น ๆ ได้อย่างง่ายดาย สิ่งที่คุณต้องทำคือเพิ่มร้านค้าที่เชื่อมต่อกับ PostGIS แล้วเพิ่มเลเยอร์จากตารางใน PostGIS

เครื่องมือทำแผนที่ฟรีอื่น ๆ ที่คุณสามารถดูได้คือ Mapserver และ MapGuide MapGuide Open Source ทำสิ่งที่น่าสนใจ แต่มีความซับซ้อนมากขึ้นและเอกสารประกอบอยู่ด้านหลังเล็กน้อย

MySQL ยังมีส่วนขยาย Spatial แต่ก็ไม่ได้มีคุณสมบัติเชิงพื้นที่และฟังก์ชั่นมากมายเท่าที่ PostGIS ทำ

หากคุณคุ้นเคยกับงูหลามฉันจะดู GeoDjango ... ฉันไม่รู้เกี่ยวกับมันเป็นการส่วนตัว แต่ฉันได้ยินสิ่งที่ดี


4

คุณสามารถค้นหาภาพรวมของปัญหาการออกแบบและการพัฒนาแอปพลิเคชั่นการแมปบนเว็บและรหัสแหล่งที่มาเต็มรูปแบบสำหรับแอปพลิเคชันการทำแผนที่สภาพแวดล้อมบน Google แผนที่และฐานข้อมูล spatio-temporal PostgreSQL / PostGIS การออกแบบและพัฒนาต้นแบบการจัดการกับข้อมูลเวกเตอร์ spatio- ชั่วคราวสิ่งแวดล้อมการวิเคราะห์และการจัดส่งโดยใช้เทคโนโลยีโอเพ่นซอร์สกรอบทั่วไปและกรณีศึกษามุ่งเน้นไปที่การจัดการน้ำบาดาลในพื้นที่ชายฝั่งทะเล "

สามารถดาวน์โหลดวิทยานิพนธ์ได้จากhttp://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf

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