Daha çox

Tilemill (Carto) kodu bir təbəqədən çoxsaylı xüsusiyyətləri düzəltmək üçün


Küçələrdəki qatdakı iki xüsusiyyəti (əsas yollar və əsas yol rampaları) eyni şəkildə tərtib etməyi hədəfləyən bu kodu necə daha effektiv şəkildə yaza bilərəm?

#tor_centreline [FCODE = 201200] {sətir genişliyi: 0.5; xətt rəngi: açıq rəng; } #tor_centreline [FCODE = 201201] {sətir genişliyi: 0.5; xətt rəngi: açıq rəng; }

Kodu daxil etdiyim zaman ...

#tor_centreline [FCODE = 201200], [FCODE = 201201] {

… Mən ikinci [FCODE = ""] # tor_centreline ilə əlaqəli olmadığına inandığım üçün xəritəmi sındırıram. [FCODE = ""] üçün bütün təbəqələrimi axtardığı və "FCODE" olmayan bir qat tapdığı zaman atribut sahəsi bir səhv alıram.


(StackExchangers faydası üçün GitHub-dan çapraz göndərmə ...)

Hər iki filtr də bir qat seçiciyə qoşulmalıdır. Yalnız bir dəfə üslubun göstərilməsini tələb edən iki seçim var:

#tor_centreline [FCODE = 201200], #tor_centreline [FCODE = 201201] {sətir genişliyi: 0.5; xətt rəngi: açıq rəng; }

və ya

#tor_centreline {[FCODE = 201200], [FCODE = 201201] {sətir genişliyi: 0,5; xətt rəngi: açıq rəng; }}

#tor_centreline {[FCODE = 201200] {sətir genişliyi: 0.5; line-color: lightgray;} [FCODE = 201201] {xətt eni: 0.5; xətt rəngi: açıq rəng;}}

bax: http://support.mapbox.com/kb/tilemill/styling-point-data-using-tilemill


Çoxsaylı xüsusiyyətləri bir qatdan tərtib etmək üçün Tilemill (Carto) kodu - Coğrafi İnformasiya Sistemləri

Hydda, OpenStreetMap İsveç tərəfindən istifadə olunan bir cizgi üslubu layihəsi. https://openstreetmap.se/#4/63.94/18.68

Əvvəlcə OSMBright'ın köhnə bir versiyasına əsaslanır, lakin estakadalar, stadionlar, meydançalar və s. Kimi daha çox xüsusiyyət əlavə etmək üçün yamaqlıdır. Hal-hazırda OpenStreetMap-Carto-dan albalı götürülmüş detallar da var.

Xahiş edirəm bu stildən istifadə edərkən bu səhifəyə istinad əlavə etməkdən çəkinməyin:

(Üzr istəyirik, GitHub bu ekran görüntülərini genişliyə görə tərəziyə verir. 900px enində yeni şəkillər yaratmalıyam.)

İnzibati sərhədlər yoxdur. Ölkə adları aşağı yaxınlaşma səviyyələrində görünür və şəhər adları bir qədər nizamsız görünə bilər.

Stil üç təbəqəyə bölünür: əsas qat, şəffaf yollar və etiket qat və həm baza, həm yollar, həm də etiketlər olan kompozit tam qat.

Danimarka ilə Cənubi İsveç arasındakı Øresund bölgəsinə baxan Hydda tam qat.

Danimarka ilə Cənubi İsveç arasındakı Øresund bölgəsinə baxan Hydda əsas qat.

Danimarka ilə Cənubi İsveç arasındakı Øresund bölgəsinə baxan Hydda yolları və etiket qatı.

Üç qatın ideyası baza ilə yollar / etiketlər arasında əyani məlumat əlavə etməyə imkan verməkdir. Yəni yolları və yazıları yarı şəffaf örtük altında gizlətmək əvəzinə aydın şəkildə görünür edir. Bu, Stokholm və ətrafındakı əmlak qiymətlərinin istilik xəritəsi olan bir görüntüdür. Hydda stilinin rəngləri yaşıl-sarı-qırmızı örtüklərlə yaxşı işləmək üçün xüsusi seçilmişdir.

Aşağı zum səviyyələrində kiçik küçələr göstərilmir. İnsan yaşadığı ərazilərdə küçələr bina blokları arasında örtülüdür.

Kiçik küçələr əvvəlcə daha böyük bir zoom səviyyəsində görünür.

Hydda stili, İsveçin coğrafi xüsusiyyətləri ilə əlaqəli inkişaflara görə Hydda-nın əsas götürdüyü OSM Bright və OSM-kartlarından fərqlənir. Bu, dünyanın digər bölgələrində problem ola bilər.

Hydda istifadə Fjällbacka arxipelaqları.

OSM-cizgi istifadə Fjällbacka arxipelaqları.

OpenStreetMap İsveç, 2020-ci ilin fevral ayından etibarən switch2osm tərəfindən təsvir edildiyi kimi bir Ubuntu 18.04 LTS-də Hydda stilləri təqdim edir.

Yerli istifadəçi renderaccunt mod_tile və PostgreSQL verilənlər bazasına sahibdir. Hydda ilə əlaqəli bütün məlumatlar saxlanılır

renderaccount / hydda / və bu üslubda kodlanmış bir yoldur. Bunu ehtiyaclarınıza uyğun dəyişdirmək istəyə bilərsiniz.

Hydda, osm2pgsql üçün öz çevirmə skriptini və üslubunu ehtiva etmir, ancaq OpenStreetMap-Carto tərəfindən təqdim ediləndən istifadə edə bilərsiniz.

osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script

/src/openstreetmap-carto/openstreetmap-carto.lua -C 2500 --nömrələr-1 -S

Hydda ilk növbədə Google Noto şriftlərindən istifadə edir.

sudo apt install fonts-noto-cjk fonts-noto-eyhamlı fonts-noto-unhinted ttf-unifont

Renderd-ə başlayarkən xəbərdarlıqlardan qorxmayın, şriftlər bir çox Linux paylanmasında fərqli olaraq adlandırılır və buna görə də bütün sistemlərdə işləmək üçün birdən çox addan istifadə edilir. Yuxarıda göstərilən paketləri quraşdırdıysanız itkin deyil.


İlk versiya: Tilemill, PostGIS, PGRestAPI

  • JSON-dakı konfiqurasiya faylı, hər bir mənbə sənədinin yerini saxlayır.
  • Hər bir məlumat dosyasını PostGIS-ə gətirmək, çevirmək və yükləmək üçün wget, ogr2ogr və psql-i çalıştırmaq üçün JQ (bəli, həqiqətən) istifadə edən baş skriptlər.
  • Məlumat dəstlərini birləşdirərək tək bir şemaya çevirmək üçün SQL skriptləri. məlumatlardan raster plitələr yaratmaq. məlumatlara sorğu edilə bilən bir interfeys təmin etmək (xüsusən xəritənin şəxsiyyətini müəyyən bir ağaca yaxınlaşdırmasına imkan vermək üçün).
  • Mapbox.js (Leaflet ətrafındakı bir sarğı) ilə qurulmuş ön tərəfə xidmət edən Nginx.
  • UTFGridin sehri ayrı-ayrı ağac nöqtələrini sorğu-sual etməyə imkan verir. (Hələ də bu texnologiyanı sevirəm.)

Kifayət qədər yaxşı işlədi, lakin verilənlər bazası ilə tamamlanmış bir veb əldə edə bilən bir server yerləşdirmək üçün böyük bir dezavantajla.


Su etiketinin yerləşdirilməsi ofset # 1465

Su xüsusiyyətləri üçün etiket bəzən səhv yerlərə qoyulmuş kimi görünür.

Http://www.openstreetmap.org/relation/1982728#map=10/5.2168/-4.2078 saytındakı “Lagune Ébrié” ni düşünün, lagünün özündən çox uzaqda göstərilən bir etiketi var:

Əminəm ki, bu parikulyar lagünün bir neçə ay əvvəl yaxşı bir etiket var idi.

Mətn uğurla yeniləndi, lakin bu səhvlərlə qarşılaşdı:

Hazırda tapşırığı bir problemə çevirə bilmirik. Zəhmət olmasa bir daha cəhd edin.

Məsələ uğurla yaradıldı, lakin şərhi hazırda yeniləyə bilmirik.

Pnorman 28 Mar 2015 şərh etdi

Bu etiket fərqli bir obyektdən gələ bilərmi? Nəinki bu əlaqənin mərkəz məkanı deyil, onun qabarıq gövdəsi və ya məhdudlaşdırıcı qutusu içərisində deyil.

Sommerluk 29 Mar 2015 şərh etdi

→ Bəzi montajlar əvvəl bu xüsusi lagünün yaxşı yerləşdirilmiş bir etiketi var idi (su sahəsi daxilində)
→ Bu etiket bir neçə ay əvvəl yoxa çıxdı.
→ Etiketi okeandakı cəmi bir neçə gün əvvəl gördüm.
→ Mətni axtardım (www.openstreetmap.org/search?query=Lagune Ébrié) və nəticələrdə yalnız bir OSM elementi var
→ Okeanın bütün sahəsini, bəlkə də 50 km ətrafında JOSM ilə yükləmişəm və bu mənada bir şey tapmadım.
→ Okeandakı etiket yalnız z10-dan z13-ə qədər görünür. Z14 ilə başlayaraq yox olur.
→ Geofabrikdən Fil Dişi Sahilinin mövcud tərzi və mövcud məlumat çıxarışı olan TileMill ilə bunu yerli olaraq çoxaltmağa çalışdım. Orada z10-dan z11-ə qədər olan okeandakı etiketi görürəm.
→ Laqunun su zonasında nə openstreetmap.org saytında, nə də yerli TileMill göstərməyimdə bir etiket tapmadım.

Matthijsmelissen 29 Mar 2015 şərh etdi

→ Geofabrikdən Fil Dişi Sahilinin mövcud tərzi və mövcud məlumat çıxarışı olan TileMill ilə bunu yerli olaraq çoxaltmağa çalışdım. Orada z10-dan z11-ə qədər olan okeandakı etiketi görürəm.

Xüsusilə bu maraqlıdır, yəni istehsal serverindəki posgis verilənlər bazası ilə bağlı bir problem deyil.

Sommerluk 29 Mar 2015 şərh etdi

Bu etiket fərqli bir obyektdən gələ bilərmi?

Xeyr, yox. İndi əminəm. Çuxur bölgəsini (addım-addım) JOSM-a yüklədim. Sonra lagün əlaqəsini seçib yeni bir təbəqəyə kopyaladım. Bu qatı saxladım və verilənlər bazasına yüklədim. Beləliklə verilənlər bazasında yalnız lagün əlaqəsi və üzvləri başqa bir element yox idi. TileMill-də nəticə:

Matthijsmelissen 29 Mar 2015 şərh etdi

Qəribədir. Dərin testlər üçün təşəkkür edirik. Bu davranışa səbəb olan minimal kod nümunəsi yarada biləcəksinizmi?

Sommerluk 29 Mar 2015 şərh etdi

Minimum kod nümunəsi https://github.com/sommerluk/openstreetmap-carto/tree/minimcode01 saytında mövcuddur və nümunə məlumatlarını da ehtiva edir.

Kodu çox azalda bilərdim. Bununla birlikdə, nümunə məlumatları ilə əlaqədar yalnız lazımsız etiketləri silə bilərdim. Çoxbucağın “daxili” elementlərini çıxartmağa başladığımda və ya çoxbucağın xarici hissəsini sadələşdirməyə başladığım zaman etiket yerləşdirilməsi birbaşa yaxşılaşır (lakin hər zaman həmişə su sahəsi daxilində deyil).

Sommerluk 29 Mar 2015 şərh etdi

Yeri gəlmişkən: Yerli olaraq hələ də eyni davranış: Z12-dən başlayaraq etiketi artıq görmürəm.

Matthijsmelissen 29 Mar 2015 şərh etdi

Əla, təşəkkür edirəm. Mapnik problemi kimi görünür. Buradakı məsələni açıq buraxacağıq, amma sonunda Mapnik tərəfində düzəldilməlidir. Onların deposu https://github.com/mapnik/mapnik. Orada xəbər verə bilərsən, yoxsa mən bunu edərəm?

Sommerluk 30 Mar 2015 şərh etdi

Mapnikin necə işlədiyini (və CartoCSS ilə necə işlədiyini) çox bilmədiyim üçün, səhv hesabatını Mapnik-də hazırlaya bilsəydiniz. Düşünürəm ki, bu daha aydın bir təsvirə səbəb olacaqdır. Hata hesabatını hər halda abunə edəcəyəm ...

Sommerluk 16.04.2015 şərh etdi

Matthijsmelissen 27.04.2015 şərh etdi

Təşəkkürlər! Bağışlayın, səhv barədə əvvəllər özüm xəbər verməyə vaxtım yox idi.

Pnorman 18 May 2016 şərh etdi

Etiketləmə Mapnik 3 altında yaxşı görünür.

Matthijsmelissen 11 sentyabr 2016-cı il tarixdə şərh etdi

Mapnik 3 artıq yayımlandı. Hələ də problemlər varsa, bunları eşitməkdən məmnun olaram.

Sommerluk 13 sentyabr 2016-cı il tarixdə şərh etdi

Bu məsələ mapnik3 ilə həll olunmur. Laqunun etiketi hələ laqunun içində deyil. Bunun əvəzinə laquna ilə əlaqəsi olmayan yaxınlıqdakı bir gölün içərisindədir:

Ekran görüntüsü openstreetmap.org saytından götürülmüşdür, ancaq yerli olaraq sınamışam (openSUSE / kosmtik / mapnik3) və nəticə eynidır.

Etiketin yerləşdirilməsi "daxili" deyilmi? Yəni bu, adalarla çoxpolyoqonlarda olsa belə, faktiki su sahəsi daxilində olmalıdır (heç vaxt quruda deyil)?

Matthijsmelissen 13 sentyabr 2016-cı il tarixdə şərh etdi

Yalnız əmin olmaq üçün bu təzə bir kafeldir?

Matthijsmelissen 13 sentyabr 2016-cı il tarixdə şərh etdi

Əlavə araşdırma üçün yenidən açılır.

Sommerluk 29 noyabr 2016-cı il tarixdə şərh etdi

Cari göstərmə. “Lagune Ébrié” etiketi laquna heç bir əlaqəsi olmayan bir gölün üzərində göstərilir. Etiketi almalı olan laqoon qırmızı xaç ilə işarələnmişdir.

Skippern 18.04.2017 şərh etdi

# 2613-də göstərilən hal kompleks bir çoxbucaqlı deyil.

Kocio-pl 5 Yanvar 2018 şərh etdi

Zəhmət olmasa əlaqəli sayda yazmaqdansa, bunun müzakirə ediləcəyi bileti tapın (ola bilməz və yaratmağı tələb edə bilər).

Yalnız bir qeyd: Mapnik göstərmə proqramıdır. Bu stilə osm-karto deyilir.

Bütün hallarda, insanlar tərəfindən yerləşdirilən "etiket" rolu olan qovşaqlar həmişə daha ağıllı olacaqdır

Razı deyiləm - yalnız müəyyən bir xəritə üçün yaxşı bir şəkildə tənzimlənə bilər. Hər xəritədə hansı etiketlərin / nişanların / xüsusiyyətlərin tələb olunacağını və bu yerləşdirmənin digər istədiyiniz xüsusiyyətlərlə ziddiyyət təşkil etməyəcəyini təxmin edə bilməzsiniz. Beləliklə Mapnik tərəfindən avtomatik toqquşma həll edilməsi (kitabxananı göstərməyi nəzərdə tuturam) getmək üçün bir yoldur və biz yalnız uyğun bir kodun yuxarı hissəyə köçürülməsini gözləyirik.

Əksinə olan etiket və nişanlar müştəri tərəfindən istifadəçi seçimlərinə görə əlavə üstünlüklərlə vektor MBTiles şəklində göstərilməlidir: birdən çox dilə dəstək, daha əlçatan şrift ölçülərinə dəstək, daha əlçatan şrift rənglərinə / ziddiyyətlərə dəstək.

Səninlə vektor təbəqələrinin gözəl olduğunu və bunun son bir həll ola biləcəyini qəbul edirəm, lakin bu kompleks bir texniki və sınaq problemidir: fərqli vektor formatları və serverləri (MBTiles bunlardan yalnız biridir - bax http://paulnorman.ca/blog/ 2016/11 / porsiyon-vektor plitələr /), keçməyi düşünməyə başlamazdan əvvəl test üçün bir maşın.

Fikrimcə, dil versiyaları qatından başlamaq yaxşıdır, çünki osm-carto bununla hər halda məşğul ola bilməz (yüzlərlə ad ola bilər: xx etiketleri) və bu, böyük bir istifadənin artırılması olardı. Bununla necə kömək edə bilərsən?

Klumbumbus 4 Mar 2018 şərh etdi

Səhv başa düşmədimsə, problem 1465 saylı ilə həll edildi (şərh). Hələ poliqondan kənarda etiket yerləşdirmə nümunəsi var: Meşənin "Zeisigwald" etiketi https://www.openstreetmap.org/relation/229790 bu skrabda yerləşdirilib: https: //c.tile.openstreetmap. org / 16/35124 / 21984.png meşə çox poliqonunun bir hissəsi olmayan şərqdə.

Matthijsmelissen 4 Mar 2018 şərh etdi

Yeni Mapnik artıq OSMF serverlərində işləyir?

Verdy-s 4 Mar 2018 & # 8226 şərh etdi

@ kocio-pl etiketlərin göstərilməsi üçün etiketlənməsi nəzərdə tutulmayıb, optimal yerləşdirmələr təklif olunur və göstəricilərdə sınanacaq ilk mövqe olmalıdır, lakin bu, göstəricinin digər etiketlərlə toqquşmamaq üçün onu ətrafında gəzdirə biləcəyi demək deyil. . Bu "optimal" yerləşdirmə yalnız etiket xəritədə tək olduqda düzgündür və buna görə də heç bir toqquşma olmaz.

Bir göstəricinin bu mövqeləri necə tənzimləməsi, göstəriciyə məxsus olacaqdır. Ancaq bu etiketlər zonada düzgün bir şəkildə mərkəzləşdirilməlidir (və zonanın ayrı adaları varsa mütləq ən böyük alt zonada olmamalıdır, çünki onun optimal yerləşdirilməsi bəzən kiçik bir adada olur və böyük bir asılılıq deyil): bir göstərici olaraq hansı subareylərin olduğunu təxmin edə bilməz etiket, yerləşdirmə üçün harada axtaracağınız barədə işarə edilməlidir. Əvvəlcə eyni alt zonadakı mümkün olan digər yerlərə baxaraq (daxili "deşikləri" örtməkdən çəkinərək) bu yerləşdirməni hərəkət etdirmək azadlığına sahibdir, sonra etiketin zonadan kənarda uzanmasına icazə verə bilər (başlanğıc hissəsinə əlavə olunarkən) etiket hələ də yerləşdirilə bilmirsə, zonaya işarə edən bir əlaqə xətti / ox çəkərək başqa yerə (zonadan kənarda, lakin çox da uzaqda) yerləşdirə bilər.

Etiketlər o dərəcədə rahatlıq təklif edir: yerləşdirmənin optimal səviyyəyə yaxşılaşdırılması üçün istifadə edilə bilən göstərişlərdir. Həndəsədən avtomatik yerləşdirmə tez-tez səhv olacaq, çünki ixtiyari seçimlər edilir (məsələn, başlanğıc mövqeyi olaraq yalnız qlobal bir məhdudlaşdırma qutusunun mərkəzi nöqtəsini və ya ən böyük subarea üçün məhdudlaşdırıcı qutunun mərkəzi nöqtəsini istifadə edin və sonra təsadüfi olacaq bir çuxurda və ya ərazinin xaricində ola biləcək başlanğıc mövqelərindən istifadə etmək.

Yerləşdirməni etiketlərlə işarə etmək, avtomatik təxmin edənlərin tez-tez səhv və ya səhv yerləşdirmələrinə səbəb olan bu özbaşına seçimlərin əksəriyyətinin qarşısını alır. (Qeyd: etiketlərin heç bir etiketə ehtiyacı yoxdur, sadəcə coğrafi koordinatları üçün istifadə olunur və başqa heç bir şey yoxdur, buna görə heç bir ada ehtiyacları belə yoxdur, göstəriləcək ad həmişə əlaqədən götürülməlidir).

Bəli, "etiket" lə bağlı bu danışıq bu dəqiq mövzu üçün açıq şəkildə "mövzuda" olur. heç vaxt "göstərmə üçün etiketləmə" kimi dizayn edilməmişdir (hətta cizgi filmi kimi xüsusi bir üslubda heç kimə xas deyil): bu "göstərmə üçün etiketləmə" arqumentinin ehtimalınız və ya tez-tez istifadə etməyiniz burada yalan, açıq şəkildə vermirsiniz ' etiketlərin yeri olduğu zaman məsələni başa düşməyin dəqiq məlumatlar göstərilməsindən tamamilə müstəqil və bu yer olduğu üçün yox kontur həndəsi tərəfindən ümumiyyətlə müəyyən edilmişdir.

BÜTÜN göstəricilər üçün nəzərdə tutulmuş ümumi bir göstərişdir / işarədir, beləliklə çox qeyri-səlis (və tez-tez çox qeyri-dəqiq) evristika istifadə etmək əvəzinə onların yerləşdirilməsini optimallaşdırmaq olar. yalnız sahə həndəsi hatları. Etiketlər haqqında qayda budur ki, düyünü bütün əraziyə ad verən yerə mümkün qədər dəqiq yerləşdirilməlidir, lakin bu yeri etiketləməyə qətiyyən ehtiyac yoxdur, heç bir etiketi olmayan tək bir düyün ola bilər (yalnız istinad münasibət, ehtimal ki, bir neçə əlaqələr, lakin adətən etiket yalnız bir dəfə istinad edilməlidir, çünki normal olaraq bu ərazilərdə konteyner sahəsindən fərqlənən bir ad var, etiketlər başqa bir obyekt həndəsəsinə əlavə edilməməlidir: heç bir şəkildə deyil və deyil digər münasibətlərin üzvləri).

Verilənlər bazasında etiket düyünlərini istəmirsinizsə (və ya onları ləğv etmək istəyirsinizsə), əlaqənin özünü bir düyünün koordinatlarını göstərən "etiket = *" etiketi ilə etiketləməklə təhlükəsiz şəkildə əvəz etmək olar, lakin bunu etmək daha az asandır düzgün redaktə edin. Bu halda, münasibətlərdə "etiket" rolu olan hər hansı bir qovşaq üzvü olmazdı.


Üslub cədvəlləri

Stil cədvəli, ümumiyyətlə ayrılmış bir faylda yerləşən, xəritənin məzmunu (nəyin göstərilməli olduğunu) və tərzini (məzmunun necə göstərildiyini) müəyyən edən koddur. Stil cədvəli 'hansı yol növləri' kimi sualların cavablarını özündə cəmləşdirir. xəritədə göstərilməlidir 'və belədirsə' Bu tip yollar hansı rəngdə olmalıdır və # 160? ' və 'Yolların eni nə qədər olmalıdır və # 160?'

Stil cədvəlləri Cascadenik, CartoCSS, Mapcss və ya XML daxil olmaqla müxtəlif dillərdə yazılmışdır. Openstreetmap-də xəritələrin göstərilməsini konfiqurasiya etmək üçün bir çox fərqli yanaşma var (ümumiyyətlə hər bir göstərmə proqramı üçün fərqli bir yanaşma istifadə olunur) & # 160:

    • Osm.org & # 160-da göstərilən əsas xəritədə istifadə olunan CartoCSS stil cədvəli: https://github.com/gravitystorm/openstreetmap-carto
    • Əvvəllər osm.org & # 160-da göstərilən əsas xəritədə istifadə olunan stil cədvəli: https://trac.openstreetmap.org/browser/applications/rendering/mapnik/osm.xml
    • Mapnik-in stil cədvəllərinin viki səhifəsi - özünüzü əlavə edin: https://github.com/mapnik/mapnik/wiki/StyleShare
    • Vikimedia alətlər serverində istifadə olunan Mapnik XML stilləri https://svn.toolserver.org/svnroot/p_osm/styles/
    • Bu, osm.org-da göstərilən əsas xəritədəki bəzi tərtibatları idarə edən lua skriptidir: https://github.com/openstreetmap/osm2pgsql/blob/master/style.lua

    Qradiyent oxları

    Bu günün yazısı son yazılarımı izləyən bir sualdan & # 8220Daha yaxşı axın xəritələrinin detalları & # 8220: Şəffafdan qeyri-şəffaflığa doğru gradyanlı oxlar necə yaradılır?

    Əsas fikir oxları rəngləndirmək üçün bir gradient dolğusundan istifadə etməkdir:

    Hər şey mükəmməl sadə görünür: xəttin istiqamətini təyin edin və xətt istiqamətinə görə qradiyent fırlanmasını təyin edin.

    Ancaq gözləyin! Bu işə yaramır!

    Məsələ, ifadələrdə mövcud olan bütün standart açı funksiyalarının geri dönməsidir saat yönünde bucaqlar, lakin qradiyent fırlanma təyin edilməlidir saat yönünün əksinə bucaqlar. Buna görə bu ifadəyə ehtiyacımız var:


    Açıq paylanmış emal üçün genişləndirilmiş kartoqrafik interfeyslər

    Peter Sykora, STATLAS layihəsinin əsas inkişaf etdiricilərindən biri idi və hazırda Yuxarı Avstriya, Digitales Oberoesterreichisches Raum-Informations-System (DORIS), Bahnhofplatz 1, A-4021 Linz, Avstriya üçün GIS Layihə Meneceridir. E-poçt: peter. [email & # 160protected] ooe. gv. at.

    Olaf Schnabel, Dia ML-nin inkişaf etdiricisidir və hazırda ETH Zurich, Wolfgang-Pauli-Strasse 15, CH-8093 Sürix, İsveçrə, Kartoqrafiya İnstitutunda doktorluq namizədidir. E-poçt: [email & # 160protected] baug. etz. ch.

    Ionut Iosifescu Enescu hazırda kartoqrafik ontologiyalar, kartoqrafik interfeyslər və kartoqrafik veb xidmətləri inkişaf etdirir və ETH Sürix, Wolfgang-Pauli-Strasse 15, CH-8093 Sürix, İsveçrə, Kartoqrafiya İnstitutunda namizəddir. E-poçt: [email & # 160protected] baug. etz. ch.

    Lorenz Hurni, ETH Zurich, Wolfgang-Pauli-Strasse 15, CH-8093 Sürix, İsveçrə, Kartoqrafiya İnstitutu, Kartoqrafiya Professorudur. E-poçt: [email & # 160protected] baug. etz. ch.

    Mücərrəd

    Son illərdə kartoqrafik Veb tətbiqetmələri qapalı monolitik tətbiqetmələrdən real vaxt xəritəsinin göstərilməsi komponentləri və xidmətlərinin mühüm rol oynadığı açıq paylanmış sistemlərə çevrilmişdir. Bu irəliləyiş xəritənin simvollaşdırılmasını təyin etmək üçün yeni və çevik yollar tələb etdi. İstədiyiniz xəritə çıxışı təsvir etmək üçün lazım olan kartoqrafik interfeyslərin inkişafı cari simvolizasiya yanaşmalarını genişləndirmək və məlumatların təsvirini paylanmış tematik xəritəçəkmə sahəsindəki ən tələbkar tələblərə uyğunlaşdırmaq üçün vasitə təklif edir.

    Bu məqalədə açıq paylanmış işləmə kontekstində müxtəlif kartoqrafik tətbiqetmələr və xidmətlər üçün istifadə edilə bilən bəzi mövcud kartoqrafik interfeyslər təhlil edilmişdir. Eyni zamanda, məqalədə bu sahədəki ən son araşdırma səylərinə nəzər salınıb.

    Au cours des dernières années, les applications cartographiques sur le Web ont grandement évolué: d'applications monolithiques fermées elles sont devenues des systèmes de paying ouverts, dans lesquels les éléments et les services des cartes en temps réels jouent un rôle vacibdir. Əlavə olaraq, moyensin çevik hissələrini və kartlarını simvolizə etməyə imkan verir. La mise au point d’interfaces cartographiques visant à décrire les données cartographiques voulues a permis d'élargir les démarches actuelles de symbolisation and d’adapter la représentation des données aux exigences les plus difficiles à satisfaire dans le domaine de cart

    Dans l’article, təhlil edərkən, dans le contexte du traitement de la paylama ouverte, müəyyən interfeyslər cartographiques pouvant être utilisées pour müxtəlif proqramlar və xidmətlər cartographiques. Sizi zərbə ilə, gerçəkləşmədən xilas olmaq üçün, üstəlik, geri qayıtmaq istəyirik.

    İndiki xidmət mərkəzli hesablama dövründə, məkan və statistik məlumat anbarlarına paylanmış şəbəkələr vasitəsi ilə daxil olmaq tendensiyası mövcuddur. Bütün dünyada qurumlar məkan məlumatlarını istifadə edir, kataloqlaşdırır, axtarır, istehsal edir və ya təmin edir. Bir neçə il əvvəl məlumatlar, məlumat mübadiləsi istifadə edərək qurumun sənədlərində və ya verilənlər bazalarında saxlanılırdı və bu cür məlumat dəstlərinin yeniləmələri yalnız qurumlar (məsələn, federal statistika qurumları və topoqrafik xidmət müəssisələri) arasında deyil, hətta fərqli bir qurumun şöbələri. Bu problem yüksək xərclərə və səmərəsiz məlumat idarəçiliyinə səbəb oldu, çünki hər qurum yalnız öz məlumatlarını deyil, digər qurumların da məlumatlarını saxlamalı idi.

    Paylanmış xidmət şəbəkələrindən istifadə edərək bu cür qurumlar səmərəli şəkildə ünsiyyət qura və məkan məlumatları mübadiləsi edə bilərlər. Veb xidmət zəncirinin sonunda bir xəritə, ümumiyyətlə, müəyyən tələblərə (məsələn, planlaşdırma, qərar qəbul etmə) uyğun olaraq tematik məlumatların vizuallaşdırılması kimi təqdim olunur. Bu çərçivədə “coğrafi məlumatların kompüter ekranında göstərilməsinə uyğun rəqəmsal görüntü faylı şəklində təsvir edilməsi” (ISO 2005) olaraq təyin olunan bir xəritə, açıq paylanmış emal anlayışlarını izləyən kartoqrafik xidmətlər tərəfindən təmin edilə bilər.

    Anlayışı modulluq paylanmış emalın onurğa sütunudur. Modülerlik, mürəkkəb tapşırıqları müstəqil şəkildə idarə edilə bilən daha sadə işlərə bölərək kompleks məhsul və prosesləri səmərəli təşkil etmə yolu (Baldwin and Clark 1997) kimi müəyyən edilə bilər (Mikkola və Gassmann 2003). Nəticədə çıxarılan hissələr ayrıca istehsal oluna və işlənə bilər və ya fərqli bir mühitdə, eyni layihədə və ya başqa bir yerdə istifadə edilə bilər (təkrar istifadə edilə bilər). Bu hissələr xidmətlər xidmət şəbəkəsində. Modul proqram dizaynının üstünlükləri arasında daha aydın bir quruluş, daha səmərəli tətbiq və yenilənmələr, daha asan proqram təminatı və təkrar istifadə edilə bilər. Şəbəkədəki hər bir xidmət müəyyən bir vəzifə yerinə yetirir. Xidmətlər ayrıca inkişaf etdirilə bilər və bir proqrama qoşula bilər. Xidmətlər interfeyslər vasitəsi ilə əlaqələndirildikdən sonra müstəqil şəkildə həyata keçirilə və dəyişdirilə bilər (Litvin və Litvin 1998).

    Kartoqrafik xidmətlərin bu cür paylanmış xidmət şəbəkələrinə inteqrasiyası yaxşı müəyyən edilmiş kartoqrafik interfeyslər olmadan baş verə bilməz. Açıq paylanmış işləmə (ODP) bir istifadəçinin iki anlayışın birləşməsini təmsil etdiyi xidmətləri tapmaq və əldə etməsi üçün zəngin bir dinamik mühit təmin edir. açıqlıqpaylanmış emal və bir çoxları tərəfindən bu günkü İT infrastrukturlarının ehtiyac duyduğu təşkilati rahatlığı qazanmağa əhəmiyyətli bir yardım olaraq görülür. ODP-nin vizyonu, coğrafi və təşkilati cəhətdən paylanmış iş qrupları arasında əməkdaşlığı dəstəkləyən, lakin bunu həm istifadəçilərdən, həm də paylayıcıların təbiəti və vasitələri ilə maraqlanmamalı olan proqramçılardan gizlədən bir informasiya texnologiyasıdır. Paylanmış bir tətbiqetmənin proqramlaşdırılması və istifadəsi, paylanmamış kimi tamamilə eyni olmalıdır.

    Təşkilati və ya idarəetmə baxımından açıqlıqdan iki cəhətdən faydalana bilərik. “Təkamül” termini açıq sistemin xarici tələblər dəyişsə də qorunma qabiliyyətini müəyyənləşdirir hüdudsuzluq sistemə daxil olduqda gözləmədikləri məlumatlara, mənbələrə və ya hətta formatlara giriş əldə edə bilən son istifadəçilər üçün məlumat və xidmət təminatında məhdudiyyətlərin olmamasını təsvir edən bir xüsusiyyətdir.

    Taşınabilirlik: sistemlər, heç bir dəyişiklik etmədən fərqli kompüter sistemlərindəki proqramları həyata keçirməyə qadirdir

    Qarşılıqlı fəaliyyət: qarşılıqlı əlaqəli hesablama sistemləri ortaq bir tapşırığı yerinə yetirmək üçün birlikdə işləyə bilər

    Qarşılıqlı əlaqə: məlumat standart interfeyslərdən istifadə edərək hesablama sistemləri arasında köçürülə bilər

    Dağıtım: proseslər və məlumatlar bir-biri ilə əlaqəli hesablama sistemləri dəstində avtomatik olaraq ən uyğun nöqtəyə köçürülə bilər

    Ölçeklenebilirlikrahatlıq: sistemlər istifadəçilər, mənbələr və hesablama obyektlərinin sayındakı dəyişiklikləri qəbul edə bilər

    Etibarlılıq azalır düzgün işləməyən hər hansı bir qovşaq səbəb olur

    Sistem performansında azalmalar şəbəkə trafikinin artması nəticəsində

    Çətinliyi artdı giderme

    Aşağıdakı bölmələr, inkişaf etmiş və genişlənmiş interfeyslər üzərində gerçək araşdırmalar yolu ilə praktikada istifadə olunan mövcud kartoqrafik interfeyslərdən gələcəyin kartoqrafik modellərinə qədər yolu göstərir.

    ETH Sürixdəki Kartoqrafiya İnstitutu müxtəlif məqsədlər üçün kartoqrafik interfeyslərin müəyyənləşdirilməsində iştirak edir. Məqsəd yalnız hər bir layihənin spesifik funksional tələblərinə cavab vermək deyil, eyni zamanda kartoqrafik komponentlər tələb edən hər hansı bir sistem üçün ümumi bir kartoqrafik çərçivə müəyyənləşdirməkdir. Ümumi bir kartoqrafik çərçivəyə ehtiyac və praktikada tətbiq olunmağı iki layihə göstərir: hər ikisi Avropa Birliyi tərəfindən maliyyələşdirilən STATLAS və ORKESTRA.

    Paylanmış emal prinsipləri əsasında qurulmuş şəbəkə xidmətlərinin sadə tətbiqetmələrində hər bir fərdi komponent ayrı-ayrılıqda inkişaf etdirilə bilər və ayrıca işləyə bilər, lakin digər komponentlərlə yalnız statik interfeyslər vasitəsilə əlaqə qura bilər. Belə bir sıx birləşdirilmişdir yanaşma, müəyyən bir sahədəki elm adamlarına öz təcrübə sahələrinə diqqət yetirməyə və beləliklə ehtiyaclarına ən uyğun xidmətləri inkişaf etdirməyə imkan verir. Lakin nəticədə digər xidmətlər ilə birləşmə dinamik şəkildə aparılmır, əksinə xidmətlər arasındakı hər interfeys üçün statik olaraq baş verir.

    Belə bir arxitekturanın əsas ideyası, daha qapalı sistemlərlə (yüksək sistem performansı, etibarlılıq) paylanmış bir sistemin bəzi üstünlüklərini (komponentlərin təkrar istifadəsi, genişlənmə) özündə birləşdirən bir tətbiqetmə yaratmaqdır.

    Bu cür sıx bağlı sistemin bir nümunəsi Avropa Birliyinin Statistik Atlas Layihəsidir (STATLAS) (Pucher və başqaları 2003). STATLAS, Avropa miqyasında statistik və məkan məlumatlarına giriş, təhlil və vizuallaşdırma təmin etmək üçün Aİ tərəfindən maliyyələşdirilən bir layihənin bir hissəsi kimi hazırlanmışdır. Statistik məlumatlar Avropa Birliyindəki iqtisadi və sosial həyatın əsas göstəricilərini əhatə edən Eurostat (2006) NewCronos REGIO verilənlər bazası ilə təmin edilmişdir. Təsnifatın inzibati səviyyələri, sözdə GISCO verilənlər bazasında verilmiş Statistik Bölgə Vahidləri Nomenklaturasının (NUTS) ilk üç səviyyəsindən istifadə edir.

    İstifadəçi domeni: İstifadəçi domeni bir istifadəçi komponentinə interfeys təqdim edir (STATLAS vəziyyətində, qrafik istifadəçi interfeysi).

    Vasitəçilik sahəsi: STATLAS tətbiqinin nüvəsi, məlumat axınını bir spesifikasiya və metaməlumat modulu istiqamətləndirən bir vasitəçidən ibarətdir ki, bu da axının düzgün istiqamətini və düzgünlüyünü və kartoqrafiya göstərilməsini və atlas idarə edilməsini idarə edən iMap vizual mühitini təmin edir ( aşağıda 3.2 bölməsinə baxın).

    Tematik etki: Tematik etki şəbəkəsi birləşdiriləcək temalı komponentləri özündə birləşdirir. Bu sistem komponentləri tələb və / və ya axtarış xidmətləri vasitəsi ilə vasitəçilik sahəsinə qoşulur. STATLAS tətbiqində tematik sahənin iki əsas komponenti var: verilənlər bazası idarəetmə sistemi (DBMS) və statistik alətlər qutusu. DBMS, biri statistik məlumatlar üçün, digəri də yuxarıda təsvir olunan məkan məlumatları üçün iki ayrı verilənlər bazasından ibarətdir. Statistik alətlər qutusu, statistik təhlil təmin etmək üçün üç modula malikdir: təsviri statistika, məlumatların çıxarılması və məkan ekonometri.

    Şəkil 1. STATLAS tətbiqetməsinin memarlıq modeli.

    STATLAS kimi paylanmış tətbiqetmələr son istifadəçi tərəfindən əldə edilə bilən bir sıra xidmətlərə xüsusi bir giriş növü təmin edir. Bu cür sıx birləşdirilmiş sistem dizayn edərkən tamamilə qapalı bir sistemə keçməmək lazımdır. İdeal sistemin genişlənməsini təmin etmək üçün açıq standartlara əsaslanan zəngin funksional interfeyslərə sahib olmaqdır.

    Avropa Birliyinin İnformasiya Cəmiyyəti Texnologiyaları (IST) tədqiqat fəaliyyətinin 6-cı Çerçevesi daxilində hazırkı inteqrasiya olunmuş layihəsi olan Risk İdarəetməsi üçün Açıq Memarlıq və Məkan Məlumat İnfrastrukturu (ORCHESTRA), risk üçün açıq bir xidmət arxitekturası inkişaf etdirərək risklərlə əlaqəli səmərəliliyi artırmağı hədəfləyir. rəhbərlik. Bu vizyonu həyata keçirmək üçün layihə, məkan, müvəqqəti və tematik xüsusiyyətləri əhatə edən inteqrasiya olunmuş bir xidmət və məlumat yanaşmasına xüsusi diqqət yetirmişdir.

    Bu layihənin bir hissəsi olaraq, ETH Zurich, ORCHESTRA-nın xəritə və diaqram xidmətlərinin memarlığının inkişaf etdirilməsindən məsuldur. Risk analizi üçün müxtəlif ədədi və ya CİS-lə əsaslanan qiymətləndirmə metodlarından istifadə olunur və müvafiq nəticələr tez-tez xəritə şəklində təqdim olunur. ORCHESTRA-nın xəritə xidmətinin kartoqrafik inkişafının bir hissəsi olaraq araşdırılan mövzulardan biri tematik xəritələr hazırlamaq üçün xəritə və diaqram xidmətlərinin əməkdaşlığı və inteqrasiyasıdır. Tematik xəritələr, risklə əlaqəli məlumat paylamaları, dəyişikliklər və birləşmələr (məsələn, risk səviyyələrinin paylanması, müxtəlif təhlükələrin meydana gəlmə sayıları ilə müqayisələr, əhali sıxlığı) kimi coğrafi anlayışları əyani şəkildə əlaqələndirən bir qərar dəstək vasitəsi olaraq risk menecmentində istifadə olunur. . Tədqiqat üçün əlavə bir mövzu, statistik analizlərin nəticələrini birbaşa veb xəritə xəritəsi tərəfindən yaradılan xəritəyə yerləşdirməkdir. Yeni dizayna görə xəritə serverlərinin gələcək tətbiqetmələri kompleks tematik Veb xəritələrini dinamik şəkildə istehsal edə bilməlidir.

    STATLAS və ORCHESTRA layihələri paylanmış xidmətlər vasitəsilə coğrafi məlumatların paylanması və mübadiləsinin çox yaxşı işləyə biləcəyini sübut etdi. Lakin statistik məlumatların daha geniş bir simvolizasiyası kimi kartoqrafik cəhətlər tam birləşdirilməyib, çünki mövcud standart simvolizasiya metodlarının bir çox mənfi cəhətləri var.

    Coğrafi məlumatların təsviri üçün tanınmış Açıq Yerleşim Konsorsiumu (OGC) standartı, OGC-nin Veb Xəritə Xidməti (WMS) tərəfindən istifadə edilən Styled Layer Descriptor (SLD). WMS kimi veb xidmətlər coğrafi məlumatlar üçün paylanmış xidmətlərdir. SLD, WMS, Web Feature Services (WFS) və Web Cooking Services (WCS) kimi veb xidmətlərini istifadəçi tərəfindən müəyyənləşdirilmiş simvolizmə ilə genişləndirmək üçün genişlənən Markup Language (XML) əsaslı təsvir dilidir. The main advantages of SLD are the structuring of the style attributes and its comprehensibility for both computers and users. Figure 2 shows an example of such a structured description. Since OGC Web services are based on layers, each layer can be symbolized with user-defined styles (e.g., the layer “hydrology” with the colour blue). This positive intention also has some disadvantages, especially considering the symbolization of geographic entities/objects. In SLD, the styles are designed for layers (e.g., building areas) and not for single objects (e.g., one particular house). This may cause problems because road types or building types are often merged in one layer.

    Figure 2. Example of a SLD description.

    Although basic styling can be achieved in SLD without programming knowledge ( Figure 2 ), more advanced styling requires an exponentially increasing effort in coding. For example, using the OGC filter, the stroke width of roads can be adapted depending on the map scale. But the length of the SLD code will explode in size, resulting in slower response times. Proportional map symbols, such as proportional circles or squares, can be drawn with a verbal description. With a significant coding effort and a very long SLD description, it is even possible to visualize groups of selected objects of a layer depending on their attributes (Lalonde 2002).

    However, it is not possible to visualize multiple data values (e.g., pie charts or bar charts). Only lines, polygons, points, texts, and raster images are integrated in the description language, which is the main reason that WMS is most often used for presenting topographic maps, rather than for thematic representations.

    Because it is based on XML, the SLD description language is easily extensible and very flexible. One possible approach to solving the problems described above is to extend SLD to the portrayal of multiple data values. But this approach leads to further problems, especially if each part of the visualization depends on different values. For example, an SLD description of a road, cartographically visualized with three different stroke types, can lead to very long and semantically wrong descriptions a pie-chart description would have to be equally verbose. In conclusion, current SLD specifications offer limited capabilities and require a lot of effort to describe advanced cartographic symbolizations.

    The Cartographic Markup Language (CartoML) is a map-description language much more advanced than any of the current standardized styling languages, including OGC's SLD 1.0. Using CartoML, the iMap visualization environment used in the STATLAS project is capable of a much richer functionality than that offered by the OGC standard services (i.e., WMS).

    CartoML is an approach for managing various map types by packaging cartographic information into an easily readable and understandable XML-based document. Cartographic design has inherited centuries of refinement, resulting in rules about the layout of maps and map elements. These rules make it a challenge to design satisfactory cartographic notation for digital mapping that takes all cartographic variables into account. Every kind of variable – from the correct width of a line to the proper dimensions of proportional symbols to which colours work well together – must be satisfied. CartoML gives common (and not so common) cartographic variables and parameters a unique place to nest within a well-structured document that has a logical and meaningful format. The advantage of using a markup language for this task is that the information is necessarily nested at different levels of complexity, a system that fits very well with the tree structure inherent in XML. It also improves the readability and usability of the code.

    An example of placing cartographic variables within a nested tree structure is shown in Figure 3 . In this example, a line feature is given two attributes – width and colour. We know that a line feature can have these two attributes because this is specified in its schema ( Figure 3 a). In the CartoML syntax, the values for each of these attributes are easily readable ( Figure 3 b). The final view of this data is the map itself ( Figure 3 c).

    Figure 3. Example CartoML description for a line map element.

    Obviously, a simple line feature can also be described by SLD, but iMap and CartoML were designed to go beyond simple feature drawing. Some of the advanced features include user-defined transparencies, anti-aliasing, bezier curves, texture mapping, and advanced point-symbol functions, as illustrated in Figure 4 . In addition, with increasing functionality the description is much shorter than an equivalent SLD description would be.

    Figure 4. The image on the left shows point features drawn with volumetric properties and transparency. In the image on the right, drawing point symbols are drawn as multivariate bar charts.

    Besides the rendering of the actual map, iMap functions as an atlas manager for numerous tasks, including setting the projection system, defining coordinates, and grouping similar maps (based on either geographic area or thematic content), as well as managing layers ( Figure 5 ). In this tree structure, an atlas consists of different maps. Each map can have different layers, and each layer is based on points, lines, or areas.

    Figure 5. Management hierarchy of the iMap visualization engine as described in CartoML.

    As mentioned above, current cartographic interfaces cannot symbolize multiple data values. Not only in SLD but even in CartoML, the user needs programming knowledge to add user-defined complex symbolizations such as bar charts and pie charts. To increase the flexibility of such description languages and cover the huge field of thematic cartography, complex symbolization of statistical data needs to be integrated into CartoML. The symbol-library and scripting-language approaches of the current vector-drawing programs and geographic information systems were rejected, since a modelling approach like CartoML is much more flexible.

    For the portrayal of single as well as multiple data values, an XML-based Diagram Markup Language (DiaML) was developed to describe and model the visualizations of statistical data (Schnabel 2005). In contrast to current approaches, DiaML requires no scripting or programming to adapt the appearance of the symbol to the user's need. As potential visualizations, proportional symbols, repeated symbols, and charts (e.g., pie, bar, wing, and dot-scatter charts) are at the user's disposal. Figure 6 shows some of these symbols as described with DiaML.

    Figure 6. Example of symbols, described with DiaML.

    While current cartographic interfaces provide a finite subset of the large number of potential symbol definitions, DiaML uses a new construction model to integrate as many symbols and diagram types as possible into the cartographic description. This model is based on an analysis of the structure of cartographic symbols to portray statistical data (Schnabel 2005). The results of the analysis show that all two-dimensional geometric and point-based map symbols consist of cartographic primitives. In DiaML, 10 cartographic primitives can be defined: point, polyline, curve, ellipse, circle, pie sector, ring, ring sector, rectangle (bar), and regular polygon ( Figure 7 ).

    Figure 7. Cartographic primitives of geometric point-based map symbols.

    centred (for proportional symbols)

    in a grid (for repeated symbols)

    polar (e.g., for pie and wing charts)

    perpendicular (e.g., for scatter charts)

    triangular (for triangular charts)

    In addition, each of the arranged cartographic primitives can be scaled in one or two directions to visualize the data values. Additional map-symbol properties, such as transformation parameters (e.g., rotations), guides, and labels, as well as graphical primitive properties (styles), were integrated in the new cartographic model. Figure 8 shows the workflow of the model.

    Şəkil 8. Workflow of the construction model: The idea behind DiaML.

    The model described here was transformed into the structured and XML-based DiaML description. Figure 9 shows an example of a DiaML description for a pie chart. To increase the reusability of the DiaML descriptions, the primitive and style definitions were separated from the symbol description. Therefore, the description is much shorter than an SLD description, since the styles and primitives need only be defined once.

    Figure 9. Example of a DiaML description for a pie chart.

    The DiaML description language was applied in a Web application called Map Symbol Brewer (Schnabel 2006) to demonstrate the applicability of the new symbolization model. Here, the DiaML description can be read and converted into a visualization. The benefits of the Map Symbol Brewer are its easy handling (just clicking on buttons) and the step-by-step process of symbol creation. Figure 10 shows the principle of the application, which can be regarded as a symbolization service. Generally, cartographic interfaces such as CartoML and DiaML increase the potential of the cartographic visualization.

    Figure 10. Application of DiaML in the Map Symbol Brewer.

    Cartographic interfaces and, therefore, cartographic services are evolving to meet the applications’ requirements for more flexibility and functionality. However, we have seen that there has always been a trade-off between flexibility (and, therefore, generic usage) and advanced cartographic output (usually done for a known data set). In this respect, SLD has very limited cartographic symbolization capabilities, although it is flexible in the sense that it can be applied to any kind of spatial data. CartoML introduces advanced cartographic features, but these predefined symbolizations are hard-coded in symbol libraries and thus resistant to change. DiaML significantly increases cartographic flexibility by allowing modelling of complex point symbols, but it has to restrict the data format, and the logic for creating the symbols must still be hard-coded in the application that converts the DiaML into a visualization.

    Cartography is about representation (MacEachren 1995). This may seem obvious to human beings, but for a computer it is another story. Although advanced cartographic symbols, and even models for symbolization, can be hard-coded into an application, this approach would be a major limitation for its future development, because each time a new symbol was defined, the code would also have to be modified. Moreover, the cartographic quality of a map depends not only on advanced map-symbolization possibilities but also on cartographic rules for symbolization. The quality of cartographic applications can be improved by following basic cartographic rules during map symbolization. Machine interpretation and application of cartographic rules is facilitated if the map semiotics are defined in a common, generic, and extensible way. A flexible design approach (i.e., one that is open to change) would be to express cartographic logic and semiotics in a knowledge-exchange format from which map descriptors can be automatically generated. Cartographic ontologies can provide the infrastructure needed to achieve this design, as ontologies represent a way of expressing knowledge in a form that computers can interpret and process.

    In the context of computer science, an ontology may be thought of as a formal representation of the knowledge associated with a particular domain, task, or application, whose ultimate purpose is to enable machine understanding (Davies, van Harmelen, and Fensel 2002). This idea is derived from the Semantic Web project, which has the goal of extending the capabilities of the World Wide Web in order to allow automatic processing and integration of information. An ontology is a hierarchical data structure containing all the relevant entities and their corresponding relationships and rules within that domain. The Web Ontology Language (OWL) is the most developed World Wide Web Consortium (W3C) recommendation for semantic Web markup languages that impose structure and semantics (meaning) on data. It is built on the Resource Description Framework (RDF), which introduces semantics by specifying a data model for resources (“things”) and the relationships between them.

    A domain ontology is a hierarchical data structure containing all the relevant entities, relationships, and rules within a specific domain. An initial ontology for the cartographic domain expressed in OWL is currently being developed at the Institute of Cartography, ETH Zurich. Ontology development follows a three-step construction approach. The first step is identifying the symbolization-related classes that will be part of the ontology. In the second step, the classes are ordered in a logical hierarchy in the third, properties and relations for (and between) the classes are defined, including generic cartographic rules.

    A skeleton proposal for a basic cartographic domain ontology centred on the concepts of map, graphic element, visual variable, and symbol can be seen in Figure 11 .

    Figure 11. Skeleton of a cartographic ontology.

    This ontology presumes that every digital map (either general reference or thematic) is essentially composed of some graphic elements (either geometric primitives or pictorial elements). The graphic elements are taken to a higher level of expression by the visual variables. As in cartographic theory, the ontology considers that the building blocks for digital map-making are the primary visual variables (colour, opacity, texture, orientation, arrangement, shape, size, focus) and the patterns (arrangement, texture, and orientation). The graphic elements and the visual variables are represented in a holistic view by symbols (topographic and thematic) that can be directly interpreted by cartographic systems and are consequently ready to be used for map symbolization.

    However, the proposed cartographic ontology is in its infancy. There is still significant work to be done in defining a critical mass of basic ontology concepts representing various thematic symbols as well as basic cartographic rules. These are needed in the first phase of development as building blocks for more advanced thematic-related cartographic concepts. For example, different types of thematic maps (choropleth maps, graduated symbol maps, multi-variable graduated symbol maps, dot density maps, etc.) can be defined only based on basic map semiotics, which, in turn, are defined with visual variables and/or patterns.

    The cartographic ontology is the proposed mechanism for handling the complexity of map-making. In this respect, the main advantage of an ontology-based cartographic interface is the modelling of semiotics and rule-based symbolization independent of a specific cartographic description language. Any improvement to the cartographic ontology (e.g., adding a cartographic rule for the placement of diagrams or labels) will automatically “upgrade” the cartographic capabilities of the application with no need to rewrite parts of the software.

    Based on the finalized domain ontology and a corresponding software library that will interpret it, application-specific ontologies can be developed by professional cartographers.

    A library interpreting the application ontology should not be confused with an expert system. An expert system tries to emulate the complex decision process of a cartographer, whereas a cartographic ontology tries to offer cartographers a natural way of interacting with computers – the language of cartography. An application ontology can be regarded as a high-level declarative programming language in which the map output is controlled by defining cartographic rules and symbols or by selecting from existing rules and using new symbols suitable for the desired output.

    In our computer-connected world, the trend towards distributed cartographic applications is increasingly more visible. As we have seen, monolithic cartographic applications are making way for distributed cartographic applications. But distributivity also means the demise of a global view and control.

    Existing cartographic interfaces have shown that cartographically advanced features are both possible and practical. In order to successfully symbolize and visualize distributed thematic data, however, cartographic interfaces will have to be further developed. Based on existing work in this field (SLD, CartoML, DiaML), new abstraction layers are emerging in the form of cartographic ontologies.


    5 Conclusion and Future Work

    In this research, we investigate multiscale map style transfer using state-of-the-art AI techniques. Specifically, two conditional generative adversarial network models, the Pix2Pix based on paired data and the CycleGAN based on unpaired data, are employed for the cartographic style transfer. The results of two methods show that GANs have the capability to transfer styles from customized styled maps like Google Maps to another without CartoCSS style sheets.

    To answer the three research questions proposed in section 1, the study explored whether the two models can preserve both the complex patterns of spatial features and the aesthetic styles in generated maps. From the qualitative visual analysis, several visual variables of the target styled maps are retained, including the feature color, the line width (size), and feature shape, especially in urban areas with buildings and roads. The locations of some markers and annotations are also learned from the transfer styled maps . However, the GANs failed to apply legible text labels from the target styled maps . Moreover, we tested the performance of two models at two different zoom levels of the map data with different geographic ranges and feature compositions. In order to check whether the output still appears to be maps, we implemented a deep convolutional neural network to evaluate the results.

    The CycleGAN model performs better than the Pix2Pix model using quantitative measures in our experiments regardless of the map zoom level. The transfer styled maps at level 15 perform better than that at level 18 using both Pix2Pix and CycleGAN models. There is a wide gap in performance at zoom level 18, with CycleGAN producing an F1-score of 0.95 but Pix2Pix only reaching a score of 0.841. Thus, geographic features at small scales can be generalized automatically, and important result with positive implications for the use of AI to assist with multiscale generalization and styling. Taken together, these findings prove that GANs have a great potential for map style rendering, transferring, and maybe other tasks in cartography.

    Although most generated maps look realistic, several problems and challenges remain. First, since the GAN models are based on pixels from the input images, the topology of geographic features may not be well retained as discussed in Section 4 . Second, because of the existence of point markers and textual labels in the tiled maps, the quality of transfer styled maps

    are influenced by them. However, the markers and text labels are important to the map purpose and might require separate pattern recognition models

    (Chiang, 2016) to achieve better results. Therefore, in our future work, we also plan to train maps without labels and markers to reduce the bias caused by them.

    In sum, this research demonstrates substantial potential for implementing artificial intelligence techniques in cartography. We outline several important directions for the use of AI in cartography moving forward. First, our use of GANs can be extended to other mapping contexts to help cartographers deconstruct the most salient stylistic elements that constitute the unique look and feel of existing designs, using this information to improve designs in future iterations. This research also can help non-experts who lack professional cartographic knowledge and experience to generate reasonable cartographic style sheet templates based on inspiration maps or visual art. Finally, integration of AI with cartographic design may automate part of the generalization process, a particularly promising avenue given the difficult of updating high resolution datasets and rendering new tilesets to support the ’map of everywhere’.


    General sketch of the topics and timeline

    Module 01: Setting up a Modern Mapping Environment and Workflow

    As almost all the software involved in a modern web mapping workflow involves text-based files (data formats and coded scripts), the essential tools for a web mapper make handling these text files as easy as possible. In this lesson we will introduce two specific programs we’ll be using throughout this course and beyond, and the process for using them.

    • We’ll begin with installing a code/text editor like Atom, Brackets, or Visual Studio Code. and GitHub. Git itself is what’s known as a “distributed version control system.” It records changes to the various files in your project (a “repository” or “repo” for short, in Git speak) as you progress through your work. This allows you to track different versions and, if (or when!) you mess up, go back to a previous version. Git also facilitates better collaboration on web projects. GitHub is the web-based social platform for using Git and managing remote repositories.

    This lesson will familiarize you with using these tools and establish a workflow we’ll be using throughout the course and program:

    • Installing a text editor
    • Managing file/directory structures
    • Installing and using a distributed version control system (GitHub)
    • Getting to know the ‘git’ workflow:
      • creating remote repositories
      • cloning remote repos to your local machine
      • adding & changing files
      • making & reverting commits
      • syncing with remote (github.com) repositories

      Week 02: Introduction to New Maps Plus, Cartography and GIS, and Creating Maps in QGIS

      This week provides a quick background discussion of cartography, mapping, and GIS. Our goals are to install our mapping toolkit containing QGIS and PostGIS, build a spatial database, and learn how to manage and prepare data for mapping,

      • Gain a basic conceptual understanding of cartography, GIS, and mapping
      • Gain familiarity with geographic data and information, and how it’s encoded within computer files
      • Install our main open-source GIS applications, QGIS and PostGIS
      • Gain a basic familiarity with the QGIS interface and creating spatial database queries in PostGIS using SQL
      • Gain awareness of spatial reference and projection issues
      • Practice opening a variety of geographic data with QGIS and viewing their attributes within QGIS
      • Query and extract data to a common web mapping format, the GeoJSON
      • Create and export a basic map as a static image file

      Week 03: Creating and Publishing Map Layouts

      After we build mapping foundation, we publish our first static map to a web page. This is classic cartography.

      • Gain applied understanding of map making and cartography
      • Practice opening a variety of geographic data with QGIS and viewing their attributes within QGIS
      • Perform basic map styling for different data types
      • Create a thematic map that graduate the size of features based on attributes
      • Learn the basic set of map elements that should be included in a map layout
      • Create and export a map layout as a static image file
      • Publish a web page that displays this static image file

      Week 04: Thematic Data Mapping With Table Joins

      We explore table joins and a common analysis technique using quantitative, numerical data, the choropleth map.

      • Learn how to manipulate and classify feature attributes to properly symbolize them
      • Identify and load a proper coordinate reference system (CRS) that uses an equal-area projection
      • Create choropleth map or normalized data
      • Adjust the legend to help the map tell a more clear story
      • Load tabular CSV data into QGIS and performing a tabular join in PostGIS

      Module 05: Spatial Joins, Hex binning and Heat Mapping

      Big data is increasingly available to download and use. The module focuses on massive point-level dataset and explores analysis techniques for their thematic representation in PostGIS.

      • Map point data using the unique symbology and layering methods in QGIS
      • Aggregate point data by polygons, a spatial join, and perform summary statistics on aggregated data
      • Tesselate a hexagon grid of equally sized polygons to aggregate point data
      • Perform kernel density function to produce raster heat maps
      • Use PostGIS functions to intersect and aggregate features

      Module 06: Georeferencing Imagery and Digitizing New Vector Features

      We’ll explore process of georeferencing an image (either aerial, satellite, or a static image) to align it to real-world locations. In our lesson, we’ll use a picture from a tethered balloon. A georeferenced image can be used as a raster layer in our GIS. The module explores techniques for creating and editing new vector geometries using this imagery.

      • Load new base maps from third-party sources
      • Use the GDAL Georeferencer to create new spatial data
      • Create new vector features by digitizing and edit features in QGIS

      Module 07: OpenStreetMap Data, Geoprocessing Tools, and Publishing Raster Tiles

      We explore how to harvest spatial data from OpenStreetMap (OSM) perform spatial analysis using the geoprocessing functions like buffer, intersect, and union. We’ll develop rule-based symbology to create a tiled web map in QGIS.

      • Introduce the OpenStreetMap project
      • Import OpenStreetMap with the QuickOSM plugin
      • Apply rule-based symbology to OSM data that changes with scales
      • Use geoprocessing tools to and find measure features within distance of other Features
      • Ouptut a simple tiled web map from QGIS using the QTiles plugin

      Module 08: Integrating QGIS with CARTO

      In this module we move away from purely-desktop GIS operations to the exciting land of the web and web mapping. We introduce a key player in the web mapping world: CARTO.

      • Creating a CARTO account and exploring the documentation and interface
      • Loading data into CARTO
      • Using the QGIS CARTO plugin
      • Pulling data down into QGIS for processing
      • Pushing data back up to CARTO
      • Making a thematic map in CARTO

      Module 09: Web mapping with GDAL and Mapbox

      This lesson continues our exploration of web-based mapping platforms. Browser technology has evolved to efficiently support vector tilesets. We’ll dive into Mapbox and explore Studio, their map design tool that has been compared to the Photoshop of online mapping. We will also use the GDAL raster library to process elevation data.

      • Accessing and processing elevation data
      • Creating elevation contours with GDAL
      • Clip Raster by Extent
      • Raster Calculator
      • Sahə Kalkulyatoru
      • The Mapbox platform
      • Vector tiles
      • Creating base map with Mapbox Studio

      Module 10: Final project

      Let your creative spirit fly with a project of your choice. You will create a public mapping project using a static map(s) in a new repository with a theme of your choice. Requirements will be detailed when the module is released.


      What is a web mapping API?

      An API (application programming interface) is a framework that you can use to write a program. It provides a set of classes and functions that help you avoid writing all the low-level code to perform specific actions. For example, web mapping APIs typically include classes for maps and layers so that you don't have to write all the low-level code for displaying an interactive map image and drawing a new layer on it. Instead, you can just create a new map object, create a new layer object, and call some method such as layer.addTo(map). The API abstracts the complexity of the task and makes it easy for you to focus on the mapping aspects of your application, rather than spending time on the low-level logistics.

      You've probably heard of general purpose APIs such as Java and the Microsoft .NET Framework that can be used to write all kinds of programs on desktop, web, and mobile platforms. There are also more specialized APIs built around certain products and functionalities. For example, you may have heard of Google App Engine, Amazon Web Services, and Microsoft Windows Azure that are designed for proprietary cloud computing environments.

      APIs designed specifically for the purpose of making web maps include OpenLayers, Leaflet, the Google Maps API, and the ArcGIS API for JavaScript. The latter two are even more specific in that they are designed around particular proprietary platforms. This lesson introduces some of the different APIs and application development approaches, then gets into detail on how to use the Leaflet API.

      Be aware that an API is not a programming language rather, it is a set of building blocks that you invoke using a language. Some APIs are supported for use with multiple programming languages and other APIs are tied to one specific language. For example, there is both a language and an API named Java. The Java language is used to work with the Java API (and other APIs). In contrast, the .NET Framework is solely an API there is no language called .NET. Applications using the .NET Framework are typically programmed using the C# or Visual Basic languages.

      Choosing a web mapping API

      When you set out to create a web map, one of the most important choices you will make is which API to use. If your application is large in scope with many clients, this one decision can affect your professional activities and trajectory for years. How can you select an API that will be the best fit for your requirements and skill set?

      The selection of an API is often tightly coupled with the decision of a platform and programming language. These two factors affect the APIs available to you. For example, if you know that your application is required to run on Android tablets, you first need to decide whether you are going to build a full-fledged native app (in other words, one that is available in Google Play and has access to the device hardware such as the camera) or one that simply runs in a web browser on the Android tablet. Developing a native app most likely means that you'll be using Java, while developing a browser-based app allows more flexibility and can be done with JavaScript and HTML, perhaps employing an API that's designed to be mobile-friendly (in other words, it supports touch gestures, resizes to device width, and so forth).

      From this example, you can probably also tell that it's important to consider which languages and platforms your developers are familiar with. If you have people on staff who know Java or Objective C, your options increase for developing native mobile apps. However, knowledge of HTML and JavaScript is usually sufficient to build browser-based apps. Most FOSS APIs for web mapping are geared toward an HTML and JavaScript approach, so this is what we'll focus on in Geog 585.

      Examples of FOSS web mapping APIs

      Below are some examples of FOSS web mapping APIs for building browser-based apps with HTML and JavaScript.

      OpenLayers

      OpenLayers is a mature and richly featured JavaScript API for building web map applications. It has an extensive collection of documentation and samples, although some of the materials can be difficult for beginners to grasp. One of nicest things about OpenLayers is the large developer community using the API. This community has created a mass of tips and examples on forums such as GIS Stack Exchange. Although OpenLayers is not as approachable for beginners as some of the other APIs, its accumulation of online help resources, and its support for many layer types from both FOSS and commercial sources offer some advantage over other APIs. In 2014, OpenLayers 3 was released which was major step because it was a complete rewrite of the library not compatible with the OpenLayers 2 branch anymore. In contrast, the current version OpenLayers 5 is still backwards compatible to previous versions of OpenLayers 3. If you feel comfortable with JavaScript and Leaflet after this lesson and decide you would like to use OpenLayers for your final project, you are welcome to go ahead, keeping in mind its strengths and weaknesses.

      Leaflet

      Leaflet is a younger FOSS web mapping API that is designed to be lightweight, mobile-friendly, and easy to get started with. It has become extremely popular over the last years (one reason why we are now teaching it in this course), and quite a few companies, such as Mapbox, use it as a basis for their own APIs. Leaflet places heavy emphasis on the use of tiled maps and client-side vector graphics drawn from sources such as GeoJSON (you will learn more about the latter in the next lesson). For basic maps that use these layer types, Leaflet is an excellent choice that has already endeared itself to many GIS developers.

      Leaflet contains a full API reference but only a handful of full working examples compared to OpenLayers. Going beyond the examples can be tricky for beginners however, the simplicity of the API lends itself well to learning on the fly.

      D3 is a FOSS data visualization library that is frequently used for charting but also contains many map examples. It binds data elements to the page's document object model (DOM), allowing for interesting and flexible data animations and transitions. Although it has a steeper learning curve for newbies, D3 is a nice option for composing a web app with interactive maps and charts. It also offers examples for using non-Mercator projections.

      Polymaps

      Polymaps is a simple FOSS mapping API primarily designed for mashing up map tiles with vector features drawn from GeoJSON and other sources. However, it seems like it is not under active development anymore, even though we have not seen an official announcement in this regard. Unforunately, the developer examples on their web site also stoppped working recently so that you can currently not see the map examples showing how Polymaps can transform and overlay a raster image onto an existing tile set and demonstrating Polymap's unique ability to generalize a large set of points on the fly using k-means clustering.

      ModestMaps

      ModestMaps is a lightweight FOSS API for displaying tiled maps. By design, it lacks a lot of the functionality of the other APIs mentioned above. Running JavaScript code requires transferring that code to the browser. Why load hundreds of functions if you know that you just want to display a map? Unfortunately, similarly to Polymaps, the web map examples on their pages don't seem to work anymore.

      Examples of proprietary web mapping APIs

      Several proprietary web mapping APIs created by commercial software companies have become very popular. In this context, "proprietary" means that the API's source code cannot be downloaded and/or is not permitted to be modified and/or cannot be deployed without paying a royalty.

      I include this section on proprietary options because you will hear about them all the time, many are free to use (under various conditions), and some of them will work with the types of layers we're using in this course. Just be aware that proprietary APIs may be oriented toward the purchase of a particular product or service and may cost money if you deploy them for monetary benefit or if they incur enormous amounts of traffic. Always check the API's license agreement before you deploy any application on a server outside your own development machine.

      Google Maps and Bing Maps APIs

      The Google Maps API part of the Google Maps Platform gives developers the opportunity to overlay their own data on top of tiled map layers from Google Maps. The overlayed data is typically supplied through KML files, and is displayed as interactive vector graphics drawn on the client side. These graphics can be restyled by the developer to use custom marker symbols, and can be bound to popups or tables to show additional information on a mouse click.

      Perhaps the biggest advantage of the Google Maps API is that it brings the look and feel of Google Maps to an application. Many Internet users have experience with Google Maps and may feel more comfortable when they see the Google Maps navigation control or map style, even when this is embedded in an unfamiliar third-party application. The Google Maps API is arguably no more robust or easier to use than some of the FOSS APIs described above however, it is thoroughly documented and offers a large developer community.

      In July 2018, Google Maps is adopting a pay-as-you-go model wherein all customers get $200/month of credit and must pay fees for service usage beyond this amount. Under their pricing plan at the time of this writing, that would be enough to cover 100,000 static map views or 28,500 dynamic map views. See this page for the most up-to-date information on Google's Pricing and Plans.

      Microsoft's Bing Maps, another large commercial maps provider, offers APIs for web and mobile applications that are similar in scope to Google's. Bing Maps offers a free usage tier along with volume-based pricing for enterprises (see details here). One difference from Google is that the Bing Maps API places less emphasis on KML usage, since Google popularized the KML format and is a primary platform used to create KML files.

      The Google and Bing mapping APIs are a popular choices among developers of place-finder applications that display real estate listings, businesses, churches, etc. However, some sites are beginning to adopt FOSS alternatives. For example, Craigslist has adopted a Leaflet + OpenStreetMap approach when showing the results of real estate searches.

      ArcGIS APIs

      Esri has created APIs for building both web apps and native mobile apps, some of which are relatively rich in function compared to the Google Maps API and many of the FOSS APIs. The ArcGIS API for JavaScript is one of the most fully featured and actively developed of these APIs.

      The ArcGIS APIs are primarily designed to work with web services that you have published using ArcGIS Online and ArcGIS Enterprise (comprised of ArcGIS Server and Portal for ArcGIS). However, some of the APIs can also display OGC services, KML, and generic tiled map services (such as the one we built with TileMill). One of the more distinguishing advantages of the APIs is their ability to tap into web services originating from ArcToolbox that perform geoprocessing on the server. This is an area where FOSS solutions lack an equivalent GUI experience (see the section on WPS services in Lesson 8).

      The APIs are free to use for development or educational use, but require a fee if you are selling the application or embedding advertising within it. Published here are Esri's terms of use.

      If you are interested in learning the Google Maps API and/or the ArcGIS API for JavaScript, the Penn State course materials for Geog 863 provide an excellent place to get started.


      FOSS4G Workshop Topics

      The FOSS4G track will be on November 22, 2012. Workshops and demonstration will be 1-2 hours each.

      Initial list only, subject to change in the coming weeks.

      Quantum GIS (http://www.qgis.org) is a user friendly Open Source Geographic Information System (GIS) that runs on several operating systems (Linux, Unix, Mac OSX, Windows and Android). QGIS supports vector, raster, and database formats. QGIS is licensed under the GNU Public License. This workshop is a technical demonstration and hands-on tutorial in the use of QGIS using the advance cartographic styling features of the application.

      Geonode (http://geonode.org) is an integrated platform for the management and publication of geospatial data. Its data management tools allow for integrated creation of data, metadata, and map visualizations. Each dataset in the system can be shared publicly or restricted to allow access to only specific users. Social features like user profiles and commenting and rating systems allow for the development of communities around each platform to facilitate the use, management, and quality control of the data the GeoNode instance contains.

      TileMill (http://tilemill.com) is a design studio for creating stunning interactive maps developed by MapBox for cartography, constituting Mapnik as a renderer, Carto as a stylesheet language, and a locally-served web interface with node.js as a server and based on Backbone.js for the client. Since version 0.9.0, the web server is wrapped with a native GUI on all supported platforms.

      GeoServer (http://geoserver.org/) - a server written in Java that allows users to share, process and edit geospatial data. Designed for interoperability, it publishes data from any major spatial data source using open standards.

      GRASS GIS (http://grass.osgeo.org/) is a software for performing spatial analysis. It consists of more than 350 modules for processing vector (2D/3D), raster and voxel data. Many interfaces to other programs in related domains like geostatistics, databases, mapserver and even other GIS software exist. It can serve as a Desktop GIS and as the backbone of a complete GIS infrastructure.

      Ushahidi platform (http://ushahidi.com/products) is a tool to easily crowdsource information using multiple channels, including SMS, email, Twitter and the web.

      Venue and available facilities

      • 2 GE Computer Labs - maximum 20 participants, with projector, computers and internet connection.
      • GE Theater - maximum 80 participants, with projector, bring your own laptops for exercises, limited wifi connection.
      • Announce to relevant mailinglist to invite more speakers and participants.
      • Create a separate registration form for the workshop to be posted to the PhilGEOS website.
      • Finalize program.