Daha çox

PostGIS vektorlarını OpenLayers-də göstərmək üçün seçimlər


Veb Xəritəçəkmə ilə çox tanışam, ona görə bu sual bir az səhv ola bilər.

Hal-hazırda PostGIS-də olan bir sıra nöqtə və çoxbucaqlı cədvəlləri göstərə bilən OpenLayers (və ya daha asan olacaqsa Google Maps) istifadə edərək çox sadə bir veb interfeysə sahib olmaq istəyirəm.

Bunun mümkün qədər sadə olmasını istəyirəm (və daha az qoruma):

  • Plitələr yaratmaq (çox yaxşı bir səbəb olmadığı təqdirdə) və ya kütləvi, mürəkkəb bir orta proqram qatına sahib olmaq istəmirəm.
  • Performansın fövqəladə olmasına ehtiyac yoxdur, çünki bu daxili istifadə üçündür və buna görə bir neçə paralel istifadəçini aşmaq lazım deyil.
  • Vektor təbəqələrinin üslubu minimal əhəmiyyətə malikdir.
  • Açıq mənbə alətlərinə çox üstünlük verilir, çünki bunun üçün büdcəm yoxdur.

Bunun üçün tövsiyə olunan yanaşma nədir?


PostGIS mənbələrindən onlayn xəritə qurmağın ən asan yolu Geoserver istifadə etməkdir. Geoserver İstifadəçi Təlimatında PostGIS-i bir məlumat mənbəyi kimi istifadə etmək üçün yaxşı bir giriş var. Əsasən əlaqə məlumatlarını ehtiva edən bir məlumat deposu əlavə edirsiniz və bundan sonra həndəsə olan hər hansı bir cədvəl dərc edə bilərsiniz. PostGIS-dən başqa bir çox digər məlumat mənbələrindən də istifadə edə bilərsiniz:

Geoserver-in veb interfeysindən OpenLayers veb səhifəsindəki qatları önizləyə bilərsiniz. Öz OpenLayers tətbiqetmənizi yaratmaq üçün bu önizləmə səhifəsinin mənbəyindən istifadə edə bilərsiniz.

Geoserver həm vektor, həm də raster məlumatları üçün bir çox stil seçimini təklif edir. Başlanğıc üçün, quraşdırma ilə gələn əvvəlcədən hazırlanmış bəzi üslubları yalnız özünüzə uyğunlaşdırmaqdan məmnun ola bilərsiniz.

Varsayılan olaraq, Geoserver çini deyil və OpenLayers plitələr istəmir. Yüksək performansa ehtiyacınız yoxdursa, onsuz da plitələrlə əziyyət çəkməyinizə ehtiyac yoxdur.

Şəxsən mən hesab edirəm ki, OpenLayers-in istifadəsi Google Maps API-dən daha asandır və Google-dan müstəqil olacaqsınız. Bir arxa plan xəritəsinə ehtiyacınız varsa, bunun əvəzinə OpenStreetMap-a baxmaq istəyə bilərsiniz.


Həqiqətən böyük bir orta proqram qatını istəmirsinizsə, TinyOWS-dan istifadə edə bilərsiniz (http://tinyows.org/trac) - Heç sınamamışam, ancaq kiçik və sürətli olduğunu iddia edir. Üstəlik OGC standartlarından istifadə edir, beləliklə daha geniş bir auditoriyaya yayımlamağa qərar verdiyiniz təqdirdə GeoServer və ya MapServer-ə keçməyə davam edə bilmədiyiniz təqdirdə eyni müştəri kodunu heç bir dəyişiklik etmədən istifadə etməyə imkan verəcəkdir.


WFS protokolunu server edə biləcək hər hansı bir tətbiqdən istifadə edə bilərsiniz. Openlayers ilə WGS protokolu vasitəsi ilə PostGIS məlumatlarını asanlıqla istifadə edə bilərsiniz. Bunu edə bilən bir neçə FLOSS tətbiqi var. Məsələn, FeatureServer, Geoserver, MapServer ... Veb Xəritəçəkmə ilə yenisinizsə, Geoserver-i məsləhət görürəm, çünki işə başlamaq çox asandır.

WFS ilə bu Openlayers nümunəsinə baxın.


Openlayers, çox sayda vektor məlumat formatını dəstəkləyir (GeoJSON, GML, KML ...), bunlar OpenLayers Vector qatından istifadə edərək göstərilə və tərtib edilə bilər.

Bəlkə də ən sadə orta proqram PostGIS məlumatlarını OL dəstəklənən formatların əksəriyyətinə xidmət edə biləcək FeatureServer ola bilər. Quraşdırmaq asandır və sadə məkan / atribut sorğularını dəstəkləyir.

Ancaq daha güclü bir şeyə ehtiyacınız varsa, Geoserver uyğun bir həll ola bilər.


PHP və ya JSP server skripti üçün st_asgeojson (), st_asKML () kimi postgisdən json, kml amd wkt qidalandırmaq və sonra serverinizdən məlumat mənbəyi bağlamaq üçün openlayers ajax sinifindən istifadə edə bilərsiniz.


Bunu hazırda Hibernate və ya Geotools istifadə edərək verilənlər bazasından məlumatlarınızı oxuyan Geomajas istifadə edərək asanlıqla edə bilərsiniz. Bu, tamamilə Java'dır, problem ola bilər, başqa dilləri seçməyinizə səbəb ola bilər.


Nə edə bilsən, bütün postgis həndəsə növlərini Openlayers-a sövq etmək üçün OpenLayers kitabxanasından və bir server dilindən istifadə etməkdir. Sizə ehtiyacınız var:

  • Verilənlərə vektor qatını yaratmaq üçün Openlayers.Layer.Vector
  • Postgis serverindən məlumat oxumaq üçün Openlayer OpenLayers.Protocol.HTTP
  • OpenLayers.Strategy. Sabit isteğe bağlıdır
  • OpenLayers.Feature.Vector bütün vektorlar müştəri səviyyəsindədir
  • OpenLayers.Format.GeoJSON və ya OpenLayers.Format.JSON
  • Postgis-ə sorğu vermək və həndəsələri müştəriyə ötürmək üçün bir server yan dili
  • Məlumatların bu formata ötürülməsi üçün server və müştəri üzərində bir JSON təhlilçisi

Bununla çox asanlıqla daha çox orta proqram olmadan göstərə bilərsiniz.


Videoya baxın: PostGIS + GeoServer + OpenLayers (Sentyabr 2021).