Daha çox

Açıq oyunçular vektor göstərmə

Açıq oyunçular vektor göstərmə


Xəritəyə bir neçə WFS dəstəkli vektor təbəqəsi əlavə etdim və performans aşağı düşdü. Bunu düzəldərkən, açıq oyunçuların göstərərkən görünən təbəqələrdəki hər bir xüsusiyyəti nəzərə aldığını gördüm.

Yaxınlaşdığım təqdirdə bir neçə təbəqədən yalnız bir neçə xüsusiyyət var və sonra xəritəni az miqdarda qaldırın deyin. Açıq oyunçulardan hansı xüsusiyyətlərin göstərilməsi lazım olduğunu təyin etmək üçün məkan indeksindən istifadə etmələrini və yalnız bunları göstərməsini gözləyərdim.

Bununla birlikdə, kontekstə əsaslanan üslublarımın hər təbəqədəki hər bir xüsusiyyət üçün simvolizator məlumatı istədiyini görürəm. Məsələn, mənim xarici Qrafik funksiyam ölkənin digər tərəfində olan xüsusiyyətlər üçün çağırılır!

externalGraphic: function (f) {return map.zoom 

Uzaqlaşdırıldıqda təbəqələrim görünmür, ancaq böyüdükdə birdən -birə minlərlə xüsusiyyət nəzərə alınır. Açılış oyunçularını göstərərkən bir filtrdən istifadə etməyin bir yolu varmı? Məkan filtrindən istifadə edərək təbəqələrin içərisindəki və xaricindəki xüsusiyyətlərə xəritəni böyütmək/işlətmək hadisəsi işləyicilərini əlavə etmək barədə düşünmüşdüm, amma əminəm ki, bunu etməməliyəm.

Məlumatlarımın əslində WFS mənbəyindən gəldiyinə inanmıram. Tətbiqim də çevrimdışı işləyir, alınan məlumatlar yerli olaraq saxlanıldıqda, bunları yaddaşda saxlamaq üçün lazım olan axtarış və qaynaqlar yaxşıdır.

Yaxınlaşdırıldıqda vektor xüsusiyyətlərini göstərərkən bəzi zəka tətbiq etmək üçün OL -nu əldə etmək üçün bir yol olmalıdır, hətta mövcud sərhədlərdən yüzlərlə mil uzaqda olan xüsusiyyətləri göstərməyi də düşünməməlisiniz, bu da görüntülərin yerli və ya yerli Zoom səviyyəsi ümumi bir simvoldan daha dəqiq bir cihaza bənzər bir görüntüyə keçəndə fayl sistemi və ya server.

Ümumilikdə 5000 -ə yaxın xüsusiyyətim var, bu əhəmiyyətsiz bir məbləğ olmalıdır. Hərəkət/böyütmə hadisələrini idarə edərək və xüsusiyyətlərimi illər əvvəl yazdığım və uzaqlaşmaq istədiyim xüsusi kitabxanadan dörd ağacdan istifadə edərək təbəqələrin daxilində və xaricində xəritələşdirməklə bu işlə məşğul oldum. Bu daha çirkin bir yol olmadığını düşünməkdə çətinlik çəkdiyim çirkin bir hackdir, xəritəni vektorlarımla təmin etməyi və onları idarə etməsini gözləyərdim.


Əvvəlcə qat səviyyəsini server səviyyəsində optimallaşdırmağa baxardım. Burada nəzərdən keçirilməli olan bəzi variantlar var (məlumatlarınız GeoServer/PostGIS cədvəlindən gəlirsə):

  • Çəkiləcək xüsusiyyətlərin sayını məhdudlaşdırmaq üçün "İstək Başına Xüsusiyyət Limiti" seçimindən istifadə edin (GeoServer web-də)
  • Cədvəldə bir məkan indeksi təyin edin (PostGIS cədvəli)

WFS on-the-fly vizualizasiya üçün o qədər də uyğun deyil-miqyası/böyütməni idarə etmir. Müştəri tərəfi vektor görüntü performansını artırmaq üçün (1) yalnız görünüşdəki xüsusiyyətlərin yükləndiyini və göstərildiyini və (2) göstərilən xüsusiyyətlərin hər bir böyütmə səviyyəsinə uyğun olaraq düzgün şəkildə sadələşdirildiyini və toplandığını təmin etmək lazımdır.

1 həll etmək üçün, məkan indeksasiyası bir həlldir. Böyük və mürəkkəb obyektlərin qatları üçün, vektor döşəmə daha uyğun variantdır.

2 -ni həll etmək üçün, internet üzərindən sürətli ötürmə müddətini və eyni zamanda müştəri tərəfindən sürətli təhlilini təmin etmək üçün məlumat formatı incə olmalıdır (məsələn, üstünlük verin) GeoJSON dəhşətli GML üzərində). Əlavə olaraq istifadə etməlisiniz ümumiləşdirmə texnikası hər bir böyütmə qatı üçün məlumatları sadələşdirmək/birləşdirmək üçün server tərəfində. Sadələşdirilmiş həndəsələrin köçürülməsi və göstərilməsi həqiqətən daha sürətlidir.


Bir fayla istinad edirsinizsə, necə indekslənməsindən və hansı formatda olmasından asılı olmayaraq, hələ də yükləmə səhifəsində olacaq və görünüş portunuzda olmayan xüsusiyyətləri də daxil edəcək. Bu vəziyyətdə lazım olan şey, server server proqramından istifadə etməkdir. Bir kafel serveri yuxarıda təklif edildi, ancaq bir kafel serveri ümumiyyətlə bir xəritə serveri ilə istifadəçi arasında oturur. Mapserver, mapnik və ya geoserver kimi bir şey tətbiq etməyə çalışın. Onlarla söhbət edən SO mövzusu: Mapnik, Mapserver və ya Geoserver

Belə bir sistem necə işləyir:

1-ön tərəfinizdən, açıq yerlərdə sorunsuz olaraq, uyğun geo-məkan sərhədləri olan bir qat üçün serverə müraciət edilir.

2-server proqramı, sorğunu şərh edir və müvafiq faylı ələ keçirir və ya cari görünüş portunuza "uyğun" olan məlumatları toplamaq üçün müvafiq verilənlər bazası cədvəlini soruşur.

3-xəritə serveri formatın (png, kml və s.) Düzgün olduğundan əmin olur və onu brauzerə ötürür

4-açıq oyunçularınızın funksionallığı renderlə məşğul olacaq. Əlbəttə ki, üslubunuzun və s. istədiyinizə əmin olmaq üçün bir az kod yazmalısınız.

Beləliklə, görürsünüz ki, yalnız istədiyiniz məlumat sorğu edilir və veb bağlantınız üzərindən köçürülür ... heç bir xüsusiyyət, heç bir məlumat yoxdur! Əsasən hər şeyi seçən bir sorğunuz olsa belə, məsələn, ölkə səviyyəli böyütmənin yan küçə məlumatları verməməsi üçün çıxışı zoom səviyyəsi məlumatlılığına görə konfiqurasiya edə bilərsiniz.

Xəritəniz/məlumatlarınız ağırdırsa və veb səhifələr hazırlayırsınızsa, server tərəfli bir Xəritəçəkmə serverindən necə istifadə etməyi öyrənməyə dəyər. Veb CİS -in mahiyyətcə insanları xəritələndirən deyil, proqramçıların domeninə çevirən öz proqramlarımızı ayırd etməliyik. Bu gün bizim üçün bunu etmək üçün sağlam, pulsuz və zəngin xüsusiyyətlərə malik proqramların olması inanılmazdır!


Bunu şərh olaraq əlavə edərdim, amma nüfuza malik olmadığım üçün bunu cavab olaraq verəcəyimi düşündüm. İnanıram ki, vektor performansını yaxşılaşdırmaq üçün OpenLayers 3 -də həm sadələşdirmə, həm də bir növ kosmik indeksləmə istifadə olunur. Hal -hazırda OL2 istifadə edirsinizsə, sınamağa dəyər ola bilər. Mənbə http://www.slideshare.net/mobile/camptocamp/open-layers3


Videoya baxın: QGIS -- OpenLayers and vector digitizing