PostGIS veritabanı için basit bir kullanıcı arabirimi nasıl oluşturulur?


21

Kuruluşum, çoğu şu anda Excel'de depolanan birçok çevresel izleme verisi (akış akışı, su kimyası vb.) Toplamaktadır. Her şeyi bir veritabanına almak istiyorum - muhtemelen PostGIS - ama veri veritabanları ilkeleri (SQL veya böyle bir şey) hakkında bilgisi olmayan insanlar için erişilebilir olması gerekir.

Ben kullanıcı bir ilgi istasyonu, değişken türü (örneğin akışı nitrat konsantrasyonu) ve bir zaman aralığı seçtiği benim veritabanı için bir tür basit ön uç istiyorum. Veritabanı daha sonra istenen verileri kullanıcının bilgisayarına indirebileceği csv biçiminde döndürür. İdeal bir dünyada, ön uç tüm izleme istasyonlarının tıklanabilir bir haritasını gösterecektir, ancak daha kolaysa mevcut sitelerin açılır listesinin başlaması iyi olacaktır. Bu ön uç muhtemelen bir web sitesi olurdu, ama olması gerekmez.

Bu ne kadar zor lütfen, ve çeşitli seçeneklerim nelerdir? Hiçbir şekilde bir veritabanı uzmanı değilim, ancak Masaüstü CBS'de sağlam bir arka planım var ve basit Python komut dosyaları yazmaktan ve PostGIS, SpatiaLite ve ESRI Kişisel coğrafi veri tabanlarıyla oynamaktan mutluyum. Hiç web geliştirme veya web CBS yapmadım, ama öğrenmeye hevesliyim.

Dünün bir kısmını mükemmel OpenGeo eğiticilerinden bazılarını keşfederek geçirdim . Bu yaklaşım umut vericidir ve en azından şimdi verilerimin bir web sitesinde nasıl görüntüleneceğini görebiliyorum. Benim için daha az belirgin olan kullanıcı veritabanını sorgulamak ve sonuçları geri almak nasıl izin.

Sorum: Böyle bir proje için ne tür bir yazılım yapısı düşünmeliyim? Örneğin

PostGIS + GeoServer + Something else?

Araştırmam gereken başka hangi seçenekler var?

Başlangıçta basit ama işlevsel bir çözüm tercih edilir: Eğer temel bir prototipi bir araya getirebilirsem bunu “doğru” yapmayı öğrenmek için daha fazla zaman harcamayı haklı çıkarmak için kullanabilirim. Açık kaynak da bir gerekliliktir, çünkü bazı faydaları kanıtlayabilene kadar bunun için herhangi bir bütçem yok.

Çok teşekkürler!


2
Haritadan ayrılırsanız, bunların tümünü sadece Apache & PHP ile yapabilirsiniz. PHP komut dosyası için PostGIS'ten veri alan bir giriş formu oluşturmanız yeterlidir. (PHP'yi Python ile değiştirebilirsiniz.) ... Ama o zaman bu GIS.SE
underdark

Yanıt veren herkese çok teşekkürler! Bunların hepsi faydalı cevaplar ve takip etmem için bana çok şey verdin. Hepsini "kabul etmek" istiyorum, ama son paragrafını çok kullanışlı bulduğum ve daha önce web.py ile karşılaşmadığım için @canisrufus'a puan verdim. GeoDango da harika görünüyor. Şerefe!
JamesS

Son paragrafımı genişletecektim, ama haksız bir şekilde konu dışı görünmeye başladı. Sorularınız varsa veya nasıl ayarlanacağınız hakkında daha uzun bir monolog istiyorsanız, beni buradan sohbete vurabilirsiniz.
canisrufus

@JamesS Bu konuda ilerleme var mı? Aynı konu üzerinde çalışarak, bir Django projesi geliştirmeye başladım
Luca Moiana

Merhaba @Luca Moiana. Bir prototip olarak, web.py, Apache ve PostGIS kullanarak aşağıdaki kabul edilen cevaptaki tavsiyelere uydum (ancak web sitem sonunda bir harita içermedi). Birkaç yıl sonra, CUAHSI Hidrolojik Bilgi Sistemini kabul ettik , bu harika. Kurulum biraz zaman alır, ancak çevresel verileri depolamak, aramak, keşfetmek, analiz etmek ve görselleştirmek için çok çeşitli araçlar sunar.
JamesS

Yanıtlar:


13

Python ve SQL'de yolunuzu zaten biliyorsanız, bir python web çerçevesi kullanarak bir web sitesi oluşturmak çok zor olmaz. İki basit olan - cherry.py ve web.py - akla geliyor. Bence Django'nun nesne ilişkisel eşleştiricisi etrafında yolunuzu öğrenmek, değerinden daha fazla iş olabilir.

Python'un psycopg2 (http://initd.org/psycopg/) adlı bir kütüphanesi ve bir öğretici: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ), PostGRESQL / PostGIS'e karşı sorguları kolayca çalıştırmanızı sağlar. Ayrıca, CSV'nizi söz konusu sorgudan oluşturmayı bir esinti haline getirecek bir CSV modülüne (http://docs.python.org/library/csv.html) sahiptir.

Diğer insanların söylediği gibi, ön uçta bir harita oluşturmak karmaşıklık ekler. Haritaları görüntülemek için OpenLayers gibi bir şeye ve veritabanınızdan (veya diğer veri kaynaklarından) harita görüntüleri oluşturmak için MapServer veya GeoServer gibi bir şeye ihtiyacınız olacaktır. Bu muhtemelen ikinci bir adım olarak daha iyi olurdu.

Şimdilik, "hepsi" ihtiyacınız gibi görünüyor bir web sayfası: istediğiniz sorgu parametrelerini seçmenizi sağlayan bir form. Onlar "gönder" vurmak, sorgu parametreleri sunucuya gönderilir (Apache iyi bir seçim olurdu), daha sonra veritabanını sorgulayan, uygun bir CSV dosyası oluşturur ve tarayıcıya döndürür betiğinizi çalıştırır. Py gibi kolay;)


2
Görüntü oluşturmak için MapServer / GeoServer'a ihtiyacınız yoktur. Verileri doğrudan PostGIS'ten alabilir ve haritanızda vektör verisi olarak görüntüleyebilirsiniz. Ancak, verilerinizin karmaşıklığına bağlı olarak önemli miktarda veri aktarıyor olabilirsiniz. Bu duruma bağlıdır. Ayrıca, bunları vektör verileri olarak görüntülemek, verilerini göstermek / düzenlemek için bir nesneyi tıklatma seçeneği sunar.
Mr_Chimp

@mr_chimp Oh, bu iyi bir nokta. Endişem arka plan katmanıydı, ancak sadece Google Haritalar veya OSM vb. Ve elbette, vektörleri aktarmanın en basit yolu, MapServer veya GeoServer gibi bir şeye hizmet etmek olacaktır;)
canisrufus

Her zaman olduğu gibi, bu iş için doğru aracı kullanmaktır. JamesS zaten bir PostGIS veritabanına sahip olduğundan, verileri doğrudan oradan da alabilir. Bir şeyi unutmadıkça, MapServer / herhangi bir şey ayarlamak sadece ekstra bir adım olurdu (normalde elbette en hızlı yol olurdu).
Mr_Chimp

8

GeoDjango

Kurulumu oldukça kolaydır ve bazı temel işlevlere sahiptir. Bu Python, en azından dili biliyorsun. İhtiyaçlarınız için aşırı olabilir. Ancak, siteyi büyütmek istiyorsanız, üzerine inşa edeceğiniz olgun bir çerçeveniz var.


5

Bir harita oluşturmak istemiyorsanız / buna ihtiyacınız yoksa. Tek ihtiyacınız olan bir web sunucusu ve programlama dilidir (kullanımı ve kurulumu kolay olduğu için Apache'yi tercih ederim, ancak başka seçenekler de vardır) ve ardından PostGIS veya başka bir veritabanı ile Postgres.

Excel dosyalarınız iyi biçimlendirilmişse, verileri veritabanına aktarmak basit olmalıdır. INSERT deyimlerini oluşturabilecek bir komut dosyası yazabilirsiniz. Açıkladığınız sorgular aynı şekilde yönetilebilir.

Eşleme bölümünü yapmak istediğinizde / ne zaman, Apache, GeoServer ve OpenLayers basit ve ücretsiz bir çözüm olacaktır. GeoServer (bildiğiniz gibi) WMS veya diğer çıktı formatları için PostGIS'i kolayca kullanabilir. Tek yapmanız gereken PostGIS'e bağlanan mağaza eklemek ve ardından PostGIS'deki tablolardan katmanlar eklemektir.

Bakabileceğiniz diğer ücretsiz harita araçları Mapserver ve MapGuide olacaktır. MapGuide Açık Kaynak çok güzel şeyler yapıyor ama daha karmaşık ve belgeleri biraz geride.

MySQL ayrıca bir Uzamsal uzantıya sahiptir, ancak PostGIS'in yaptığı kadar çok uzamsal özellik ve fonksiyona sahip değildir.

Python'a aşina iseniz GeoDjango'ya bakardım ... Kişisel olarak çok fazla şey bilmiyorum ama iyi şeyler duydum


4

Bilgisayar Haritalama tezindeki nispeten yeni MSc'mde Google Haritalar ve uzaysal-geçici veritabanı PostgreSQL / PostGIS tabanlı çevresel bir web haritalama uygulaması için tam olarak belgelenmiş kaynak kodunun yanı sıra web haritalama uygulamalarının tasarım ve geliştirme sorunlarına genel bir bakış bulabilirsiniz: " Açık Kaynak teknolojisini kullanarak uzay-zamansal çevresel vektör veri yönetimi, analizi ve dağıtımını ele alan bir prototipin tasarımı ve geliştirilmesi.Kıyı bölgesinde yeraltı suyu yönetimine odaklanan genel çerçeve ve vaka çalışması "

Tez http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf adresinden indirilebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.