Daha çox

Açıq mənbə vasitəsi ilə veb merkator proyeksiyasına necə çevrilir?

Açıq mənbə vasitəsi ilə veb merkator proyeksiyasına necə çevrilir?


Veb merkator proyeksiyasına çevrilməyim lazım olan bir KML faylım var. Bu fayl Tilemill -ə daxil olacaq. Faylları veb merkator proyeksiyasına çevirmək üçün hansı yaxşı açıq mənbə vasitələri var?


Birincisi, məlumatları webmercator -a yansıtmaq lazım deyil, çünki tilemill tezliklə layihələndirə bilər. Ancaq böyük bir məlumat bazanız varsa, WebMercator -da məlumatların olması kömək edir.

Qeyd etməlisiniz ki, KML standartına görə, KML məlumatları yalnız WGS84 Latlong, yəni EPSG: 4326 -da ola bilər.

Buna görə də bu məlumatları başqa bir formata köçürməliyik. KML -də eyni sahələri olan yalnız bir növ (məsələn, nöqtələr, Poliqonlar və s.) Məlumatlarınız varsa, bu KML -ni bir şəkil faylına layihələşdirməyi təklif edərəm.

Aşağıdakı komanda ilə KML -ni layihə etmək üçün Gdal alətlər dəstindən ogr2ogr istifadə edə bilərsiniz:

ogr2ogr -t_srs EPSG: 3857 output.shp input.kml

Andre Jooste aşağıdakı şərhdə xəbərdar etdiyi kimi,

Atribut cədvəl adlarına diqqət yetirin. Bunlar yalnız bir rəqəm deyil, şəkil formatında 10 simvoldan ibarətdir. ogr2ogr, lazım olduqda sahə adlarını kəsə bilər


Python və Açıq Hava Trafik Veriləri ilə Öz Uçuş İzləmə Tətbiqinizi yaradın

Bir şeyin mövqeyini izləmək bəyəndiyim bir mövzudur, ona görə də altıncı hissi olan bir insan kimi hiss edirəm. Bu mənada bir cismin harada olduğunu və necə hərəkət etdiyini bilirəm, baxmayaraq ki, obyekti birbaşa çılpaq gözlərimlə görə bilmirəm. Sonra altıncı hissini necə əldə edə bilərik? Çünki adi bir insan olaraq yalnız beş hissimiz var.

Fikrimcə, bu gün bu rəqəmsal əsrdə yaşayarkən, artıq bir tətbiqdə tətbiq olunan texnologiya adlanan altıncı hissimiz var idi. Uçuş izləmə ilə bağlı bu yazımızdakı mövzumuzla əlaqədar olaraq, yer üzündə təyyarələrin mövqeyini izləməyimizə imkan verən çox sayda uçuş izləmə tətbiqetmələri var, məsələn, flyhtradar24, FlightAware, uçuş görünüşü və s. Bu yazı bu tətbiqləri müzakirə etməyəcək, üstəlik python ilə öz uçuş izləmə tətbiqimizi necə edəcəyimizi müzakirə edəcəyəm.

Daha əvvəl python ilə uçuş izləmə ilə bağlı iki dərs yazmışdım. Birincisi, python ilə sadə bir uçuş izləmə proqramı yaratmaqla, digəri isə pandalar və bokeh ilə uçuş izləmə tətbiqi yaratmaqdır. Bunun bir fərqi nədir? Əsas fərq məlumat mənbəyidir. Əvvəlki iki yazıda ADS-B Exchange-dən istifadə etdim və bu dərsdə Opensky Network-dan istifadə etdim. Digər bir fərq modul versiyasıdır. Bu dərslikdə, xüsusən kitabxana qurmaq üçün python kitabxanasının ən son versiyasını istifadə edirəm. Beləliklə, kodda kiçik bir dəyişiklik olacaq.

Giriş üçün kifayətdir. İndi açıq hava trafik məlumatlarından istifadə edərək python ilə bir uçuş izləmə tətbiqinin necə qurulacağını əsas mövzumuza keçək. Bu təlimat bir neçə alt mövzudan ibarətdir: Məlumat əldə etmək, tələb olunan kitabxanaları idxal etmək, baza xəritəsini yükləmək, təyyarələrin mövqelərini qurmaq və#34 real vaxt və#34 uçuş izləmə tətbiqi etmək. Hər hissəni müzakirə edəcəyik və bu təlimatın sonunda, şəkil 1 -də göstərildiyi kimi bir brauzerdə işləyən uçuş izləmə tətbiqini alacağıq.

Şəkil 1. Uçuş İzləmə Tətbiqi

Hava Trafik Məlumatlarının Alınması

Daha əvvəl də qeyd etdiyim kimi, bu təlimatda OpenSky Şəbəkəsindən açıq hava trafik məlumatlarından istifadə edirik. OpenSky Network, xüsusilə araşdırma və qeyri-kommersiya məqsədləri üçün ictimaiyyətə açıq hava trafiki məlumatları verən qeyri-kommersiya konsorsiumudur. Məlumatlara REST API, Python API və Java API vasitəsilə daxil olmaq mümkündür. Bu təlimatda canlı hava trafik məlumatlarını əldə etmək üçün REST API -dən istifadə edəcəyik.

REST API istifadə edərək məlumatları əldə etmək istək əməliyyatı istifadə etməklə edilə bilər. İstəklərdən iki növ istifadə edilə bilər. Birincisi, UNIX zaman damgası və ya ICAO24 ünvanındakı zamana əsaslanan xüsusi təyyarə tələbidir. İkincisi, WGS84 koordinat sistemindən istifadə edərək bir sahədə bütün təyyarə məlumatlarını əldə edə bilərik. Bundan əlavə, məlumatlara giriş anonim və ya qeydiyyatdan keçmiş istifadəçi tərəfindən edilə bilər. Anonim bir sorğu üçün, 10 saniyə qətnamə və qeydiyyatdan keçmiş istifadəçi üçün 5 saniyə var.

Bu dərsdə ikincisini istifadə edəcəyik. Minimum və maksimum koordinatlarla bir sahə ölçüsü təyin edəcəyik və sonra bölgədəki bütün təyyarə məlumatlarını əldə etmək üçün sorğu göndərəcəyik. Məsələn, ABŞ üzərindən minimum koordinat -125.974,30.038 və maksimum koordinat -68.748,52.214 ilə məlumat əldə etmək istəyirik. Həm anonim, həm də qeydiyyatdan keçmiş istifadəçilər üçün sorğu aşağıdakı kimi olacaq.

Oxumağa davam etmədən və sorğunun düzgün olduğundan əmin olmaq üçün onu sınayaq. Anonim sorğunu kopyalayın və brauzerə yapışdırın. Aşağıdakı şəkil 2 kimi bir cavab alsanız, işləyir.

Şəkil 2. Hava nəqliyyatı məlumatlarına cavab

Şəkil 2 -də göstərildiyi kimi qaytarma cavabı iki düyməli JSON quruluşundadır. Birincisi vaxt ikincisi isə Dövlətlər bir siyahı sırasındakı hər bir təyyarə üçün məlumatları ehtiva edir. Siyahı dizisi, ICAO24 ünvanı, təyyarə zəng işarəsi, mənşə ölkəsi, vaxt mövqeyi, son əlaqə, uzunluq, enlik, barometr yüksəkliyi və s. Kimi bir çox məlumatı saxlayır. Məlumat cavabı və OpenSky Network API haqqında daha ətraflı məlumat üçün OpenSky Network API Sənədlərinə baxın.

Pythonda Hava Trafik Məlumatlarının Alınması

Artıq bir brauzerdə REST API istifadə edərək trafik məlumatlarını əldə etdik. İndi bunu Pythonda edək və cavabı növbəti məqsəd üçün işləyək. Bu dərs üçün Python 3.8.2 ilə Jupyter noutbukunu və Bokeh 2.1.1, Pandas 0.25.3, istəkləri, json və numpy kimi bəzi kitabxanaları istifadə edərək mən 'm.

Aşağıda bir sorğu etmək və məlumatlarla bir az işləmək üçün kod var. Başlanğıcda, istəklər, json və Pandas kimi tələb olunan kitabxanaları idxal edirik. Sonra müvafiq dəyişən ilə WGS84 -də koordinat dərəcəsini təyin edin lon_min, lat_min, lon_max və lat_max. Koordinat dərəcəsinə əsaslanaraq sorğu sorğusu edin. Qeydiyyatdan keçmiş bir istifadəçisinizsə, istifadəçi adını və şifrənizi daxil edin istifadəçi_adıparol 11-12 xəttində dəyişən. Verilmiş koordinat və istifadəçi məlumatlarına əsaslanaraq, bir sorğu sorğusu yaradırıq url_data 13 -cü sətirdəki kimi dəyişən və json formatında cavabı əldə edin. Kodun qalıqları cavab məlumatlarını Pandas məlumat çərçivəsinə atmaq və boş/boş məlumatları 'NaN ' dəyəri ilə 'Veri yoxdur ' ilə əvəz etmək üçün istifadə olunur. Məlumat çərçivəsi olan son xətt və#39s baş Şəkil 3 -də göstərildiyi kimi məlumatların ilk 5 üst sətrini görmək üçün metoddan istifadə olunur.

Şəkil 3. Uçuş izləmə məlumat çərçivəsi

Kodu icra etdikdən sonra şəkil 3 -də olduğu kimi bir nəticə əldə etdiyinizə əmin olun. Əgər əldə etsəniz, hər şeyin yaxşı olduğunu bildirir və növbəti addım üçün istifadə ediləcək məlumatlara sahibik.

Təyyarənin xəritədə təsvir edilməsi

Məlumat əldə etdikdən sonra bütün təyyarələrin yerini xəritədə təsvir etməyə icazə verin. Plan qurmaq üçün Bokeh kitabxanasından istifadə edirik. Buna görə əvvəlcə kitabxananı idxal etməliyik. Əlavə olaraq koordinat çevrilməsində istifadə ediləcək NumPy kitabxanasını da idxal etməliyik.

Koordinat sisteminin çevrilməsi adlanan bir funksiyada həyata keçirilir wgs84_web_mercator_. Bu funksiya WGS84 koordinatını web Mercator koordinat sisteminə çevirmək üçün istifadə ediləcək. A istifadə etdiyimiz üçün bu çevrilmə lazımdır STAMEN_TERRAIN web Mercator proyeksiyasına (EPSG: 3857) malik bir veb brauzerində bazemap.

Koordinat dönüşüm funksiyasını yaratdıqdan və məlumat çərçivəsi və ölçü koordinatları üçün çevrilməni həyata keçirin. Sonra, x və y koordinatları aralığına əsaslanaraq, sahə sahəsinin ölçülərini təyin edərək, fiqur parametrləri qururuq. Təyyarə, x və y koordinatlarına əsaslanaraq Xəritələr və təyyarə simvolu şəkli ilə əsas xəritədə qurulacaq. Təyyarəni qurmaq üçün niyə həm nöqtə, həm də görüntü istifadə olunur? Bir təyyarə şəkli istifadə edərək görüntü daha yaxşı bir görsellik verər və müvafiq iz bucağı ilə döndürülə bilər. Ancaq təəssüf ki, seçilmiş bir obyekti yüksək işıqlandıra və hover aləti ilə daha çox məlumat göstərə bilməz. Bu problemi aradan qaldırmaq üçün gözəl bir vizuallaşdırma əldə etmək və seçim və sürüşmə vasitəsini aktivləşdirmək üçün həm şəkildən, həm də dairə nöqtəsindən istifadə edirik.

Bu addıma qədər kod aşağıdakı kimidir. Əgər icra olunarsa, şəkil 4 -də olduğu kimi bir nəticə əldə edəcəyik.

Uçuş İzləmə Tətbiqi yaradın

İndiyə qədər hava nəqliyyatı məlumatlarını əldə etmək və təyyarəni xəritədə təsvir etmək barədə danışmışdıq. Bu son hissədə veb brauzerdə işləyən bir uçuş izləmə tətbiqinin necə qurulacağını görəcəyik. Tətbiq avtomatik olaraq müəyyən bir müddətdə yeni məlumatları alacaq və xəritədə məlumat quracaq. Bu hissədə kodu əvvəlki addımda birləşdirəcəyik və Bokeh kitabxanasından istifadə edərək bir tətbiqə yığacağıq. Tam kodu bu təlimatın sonunda tapa bilərsiniz.

Koda baxsanız, əlavə Bokeh kitabxanasını idxal etməliyik Server, TətbiqHandler funksiyası. Tətbiq kodu 50 -ci sətirdən başlayır. Burada tətbiqin əsas funksiyası adlanır uçuş_təqibi. Uçuş məlumatlarını yeniləmək, Pandas məlumat çərçivəsinə atmaq, Bokeh məlumat sütunu mənbəyinə çevirmək və axın etmək, hər 5 saniyədən bir yeniləməni geri çağırmaq və xəritədə məlumatların tərtib edilməsi kimi əsas funksiya icra edildikdə bütün funksiyalardan ibarət olan əsas funksiya alınacaq. Əsas tətbiq funksiyasını yaratdıqdan sonra sonunda server üçün bəzi dəyişənləri və ya parametrləri təyin edirik. Koddakı şərh etiketləri ilə bütün prosesi tapa bilərsiniz

İndi tətbiqi sınamağın vaxtı gəldi. Kodu işə salın və bir veb brauzeri açın. Localhost yazın: portnumber (məs. Localhost: 8084). Aşağıdakı şəkildə veb brauzerdə işləyən uçuş izləmə tətbiqini görməlisiniz.

Şəkil 5. Veb brauzerdə uçuş izləmə tətbiqi

Python və açıq hava trafiki məlumatlarından istifadə edərək, demək olar ki,#34 dəqiqədə bir uçuş izləmə tətbiqetməsinin necə qurulacağına dair bütün bu təlimat. Bu dərslikdə OpenSky Networks -dan açıq hava trafiki məlumatlarını necə əldə etməyi, onu emal etməyi və veb brauzerdə işləyən uçuş izləmə proqramı qurmağı öyrəndik. Bu yazını bitirməzdən əvvəl OpenSky Network dərnəyinə bütün zəhmətləri üçün təşəkkür etmək və məlumatları ictimaiyyətə çatdırmaq istəyirəm. Oxuduğunuz üçün təşəkkür edirəm və bunun fayda verəcəyini düşünürsünüzsə başqaları ilə bölüşməkdən çəkinməyin.

Hər halda, bir QGIS istifadəçisisinizsə, bu hava trafik məlumatlarının istifadəsi ilə QGIS -də demək olar ki, real vaxtda canlı məlumatların vizualizasiyası haqqında bir dərs də yazdım. Əgər maraqlanırsınızsa yoxlayın.


Koordinatları tez bir zamanda təkrarlamaq üçün JavaScript üçün ArcGIS API ilə birlikdə Proj4js istifadə edin

Texniki dəstək olaraq, xüsusi bir proyeksiya ilə baza xəritəsini istifadə edərkən JavaScript tətbiqlərində cari siçan mövqeyinin enini və uzunluğunu davamlı göstərmək istəyən bir çox insanla danışdım. JavaScript üçün ArcGIS API, düşünə biləcəyiniz hər hansı bir koordinatı yenidən çıxarmağı dəstəkləyir, ancaq WGS84 və Web Mercator arasında konvertasiya etməsəniz, riyaziyyatdan kömək almaq üçün bir həndəsə xidmətindən istifadə etmək lazımdır.

Həndəsə Xidmətimiz, tamponlama, qabarcıq gövdələrin hesablanması, vertex sıxlığının azaldılması və yenidən şəkilləşdirmə də daxil olmaqla hər cür manipulyasiya və təhlilə kömək edən və eyni zamanda bir xüsusiyyətlər toplusu üzərində işləyə bilən zəhmli bir vasitədir, lakin bu ssenaridə zəncir mişarını çıxarmaq kimi sendviçinizi yarıya bölmək.

Sorğunu göndərmək və cavabı gözləmək üçün lazım olan vaxt, siçanın cari yerini davamlı olaraq təkzib etməyi qeyri -mümkün edir. Şükürlər olsun ki, kömək edə biləcək Proj4js adlı açıq mənbə JavaScript kitabxanası var. Proj4js yüklədikdən və yenidən layihələndirmək istədiyiniz iki koordinat sistemi haqqında bir az məlumat verdikdən sonra ehtiyacınız olan cavabı birbaşa brauzerdən əldə edə bilərsiniz.

İzləməli olduğunuz əsas addımlar bunlardır:

1. Əlavə bir skript etiketindən istifadə edərək, tətbiqinizə JSAPI ilə birlikdə Proj4js yükləyin

2. Proj4js -in anlayacağı bir formatda iki xüsusi proyeksiya təyin edin (formatlaşdırma haqqında daha çox məlumat üçün Githubdakı layihəyə baxın)

3. nəhayət, bir hadisə dinləyicisini simləşdirin ki, proj4js siçan xəritənin üzərində hər dəfə hərəkət edəndə yenidən yansımanı hesablaya bilsin.

Enlem və boylam koordinatlarını interaktiv UTM 12N xəritəsində göstərən canlı bir nümunə burada tapa bilərsiniz:


Coregister

Çekirdek qeydiyyatı vasitəsi, sifarişiniz daxilində bir sıra hədəf əşyaları bir ankraj elementinə qeyd etməyinizə imkan verir, bu da dərin müvəqqəti görüntü yığınlarının zaman seriyası analizini aparmağı asanlaşdırır. Əsas qeydiyyat vasitəsi, müəyyən bir zaman seriyasındakı şəkillərin məkan baxımından hizalanmasını təmin edir, belə ki, bir şəkildəki hər hansı bir xüsusiyyət seriyadakı hər hansı digər görüntüdəki mövqeyi ilə mümkün qədər dəqiq üst -üstə düşür.

Bu alət, bir səhnədə olan kiçik maraq sahələrinin qeydiyyatını dəstəkləmək üçün hazırlanmışdır və zaman seriyasındakı səhnələr arasında yüksək coğrafi üst -üstə düşmə ilə ən yaxşı şəkildə işləyir.

Məhsul Girişləri

Coregister aləti, REScene istisna olmaqla bütün maddə növlərini və basic_ * və * _nitf paketləri istisna olmaqla bütün paket növlərini dəstəkləyir. Kompozit alətlə uyğun gəlmir.

Parametrlər

  • anchor_item (string) (tələb olunur): Bütün digər elementlərin əsas qeydiyyatdan keçməli olduğu maddənin item_id. Hal -hazırda, yalnız bir item_id verilə bilər və bu, sifarişdəki məhsullardan biri kimi daxil edilməlidir. Sifarişdəki maddələr coğrafi baxımdan uğurla qeydiyyatdan keçmək üçün çapa elementi ilə üst -üstə düşməlidir.

Nümunə İstək

Alət Çıxışları

Hər bir paket üçün bir görüntü çıxışı faylı hazırlanır. Çapa görüntü faylı və uyğun udm, fayl adlarına "_anchor" əlavə edəcək. Uğurla qeydiyyata alınmış və ya lövbər elementi ilə məkan baxımından uyğunlaşdırılmış görüntü sənədləri və onlara uyğun udmların (yəni qeydiyyatına ehtiyac yoxdur) fayl adlarına "_coreg" əlavə olunacaq.

Alət, hər bir məhsulun çevrilməsinin təfərrüatlarını ehtiva edən (çapa elementi istisna olmaqla) hər bir maddə üçün əlavə qeydiyyat keyfiyyəti json faylı təqdim edir. Rpc və xml faylları keçiləcək.

Maddə Coregistration Keyfiyyətli JSON Fayl Parametrləri

Əsas qeydiyyat keyfiyyəti json sidecar faylı, əsas qeyd dönüşümləri ilə bağlı aşağıdakı məlumatları ehtiva edir:

  • projection_epsg_before: Maddənin orijinal proyeksiyasını siyahıya alır.
  • proyeksiya_epsg_faktından sonra: Transformasiyadan sonra maddənin proyeksiyasını sadalayır. Çapa elementinin redaksiyasına çevrilmiş olsaydı, yenilənəcək. Element təkrar edilməsə, bu sahə boş qalacaq.
  • pixel_shift: Əsas qeydiyyat çevrilməsini piksellərlə təsvir edir.
  • matching_score_before: Əsas qeydiyyatdan əvvəl görüntü hizalanmasını təsvir edən törəmə metrik.
    • Uyğun hesab, Normallaşdırılmış Kök Ortalama Kare Hata və Struktur Oxşarlıq İndeksinin birləşməsinə baxır.
    • Uyğun bir nəticə 0 -dan 1 -ə qədərdir.
    • 0.8 -dən yuxarı bir nəticə, maddənin artıq çox yaxşı uyğunlaşdığını və artıq əlaqəli olduğunu göstərir. Bu fayllar "_coreg" şəkilçisi ilə işarələnəcək və keçiləcək (və ya çapa elementi proyeksiyasına yenidən çıxarılacaq və çatdırılacaq).
    • Hesab 0.8 -dən aşağı olarsa, alət elementi qeyd etməyə çalışacaq. Diqqət yetirin ki, 0.8 balı heç də uyğunsuzluğu göstərmir.

    Əsas qeydiyyatdan keçə bilməyən və ya əsas qeydiyyat transformasiyasından sonra 0.001 -dən aşağı bir nəticə əldə edən maddələr dəyişdirilməyəcək. Bunun əvəzinə, bunlar heç bir əsas qeydiyyat (və ya yenidən imtina) çevrilmədən çatdırılacaq və fayl adlarına "_coreg" əlavə edilməyəcək.

    Çıxış Nümunəsi - Uğurlu Əsas Qeydiyyat

    Çıxış Nümunəsi - Əsas Qeydiyyat Arızası

    Çıxış Nümunəsi - Əsas Qeydiyyatdan Atılan Maddə Artıq Əlaqəlidir

    20200714_165944_0f4e_3B_AnalyticMS.tif üçün matching_score_before əvvəl 0.8 -dən böyük olduğu üçün, maddə ötürülür.

    Coregister Tool haqqında hər hansı bir rəyinizi burada görmək istərdik


    Meşə Atlaslarının başlıqlarının altına baxır

    Hər biri birdən çox dildə olan fərqli Meşə Atlaslarının yerləşdirilməsi və idarə edilməsi güclü texniki arxitektura və qabiliyyət tələb edir. Bu saytların işləməsinə səbəb olan şeylərin pərdəarxasına baxın.

    1. Bacarıqların artırılması

    Hər bir Orman Atlası ilə bağlı məlumatların milli qərarların qəbul edilməsinə təsir göstərə biləcəyini təmin etmək üçün, nazirliklər arasında məkan planlaması və məkan düşüncəsini tətbiq etdik. Məmurları məkan məlumatları və təhlilləri ilə tanış etmək üçün hər bir ölkə üçün mövcud meşə və torpaqdan istifadə titulları rəqəmsal hala gətirildi və həm çap, həm də interaktiv xəritələr olaraq nəşr edildi. Xəritələr, mövcud torpaq bölgüsünü, torpaq örtüyünün dəyişməsini və ikisi arasındakı qarşılıqlı asılılıqları nümayiş etdirdi və işçilərə bu tip analitiklərin gücünü anlamağa kömək etdi. İşçilər daha sonra CİS və məlumat idarəçiliyində daha da təlim keçərək xəritələr hazırlamağa və təhlil etməyə imkan verdilər. Artan tutumla, mərkəzi serverlərdən, müəssisə geodatabazlarından və onlayn geodata portallarından istifadə edərək daha mürəkkəb sistemlər tətbiq edildi. Hazırda nazirlik işçiləri məlumatları təkbaşına idarə edir və yeniləyirsə də, ölkədəki WRI işçiləri yenə də kartoqrafiya vahidlərini hər gün dəstəkləyir və davamlılıq və sabit bir sistem təmin etmək üçün işlə bağlı təlimlər verir.

    2. Sistem memarlığı

    Bütün bir təşkilatın məlumatlarını Konqo Hövzəsi ölkələri kontekstində paylaşmasına imkan verən güclü bir sistemin hazırlanması çətindir. Qərbi dünyada sabit bir elektrik şəbəkəsi və genişzolaqlı internet kimi qəbul edilən şeylər Mərkəzi Afrikada verilmir. Çempionlar çox olsa da, ümumi kompüter savadı hələ də çox aşağıdır.

    ArcGIS, bu çətin mühitdə belə işləyən həllər təqdim edir. Nazirliklərin kartoqrafiya bölmələri mərkəzi ArcSDE verilənlər bazası ilə təchiz edilmişdir. Texniklər, coğrafi verilənlər bazasını yerli maşınlarına kopyalayır və şəbəkə bağlandıqda və ya yan tərəfdən işlədikdə belə məlumatlara daxil ola və düzəldə bilərlər. Versioning, nəşr üçün hazır olana qədər layihələri təcrid olunmuş vəziyyətdə saxlamağa imkan verir. Fərqli topologiya qaydaları, komandadakı məlumatlardakı uyğunsuzluqları tez bir zamanda müəyyən etməyə kömək edir. Mərkəzi verilənlər bazası ilə müntəzəm sinxronizasiya, komandadakı hər kəsin hər zaman ən son məlumatlara malik olmasını təmin edir.

    Texniki olmayan işçilərə xəritələrə və digər məlumatlara giriş imkanı vermək üçün coğrafi verilənlər bazasının məlumat qatları bir ArcGIS Server nümunəsi ilə qeydiyyata alınır və ArcGIS Server üçün Server istifadə edərək nazirlikdə paylaşılır. Portal ayrılmış mühitlər üçün konfiqurasiya edilmişdir və internet bağlantısından asılı olmayaraq işləyir. Forest Atlas tətbiqləri nazirlikdə istifadə üçün Portalda yerləşdirilir. Şəbəkədən kənar olan sahə ofisləri e -poçt və ya USB çubuğu ilə delta faylları şəklində məlumatların müntəzəm olaraq yenilənməsini alır.

    İctimai versiya yüksək mövcudluğu təmin etmək üçün AWS və ArcGIS online -də yerləşdirilir. Texniklər, mərkəzi geodatabazanın onlayn replikasını sinxronizasiya etmək üçün delta fayllarından istifadə edərək sistemi güncəl saxlayır. Buludda olduqdan sonra məlumatlar, müxtəlif proqnozlarda və dillərdə coğrafi verilənlər bazasının nüsxələrini saxlayan canlı geodatabazlara əlavə olaraq təkrarlanır. ArcSDE daxilində domenləri və alt növləri tərcümə edərək, Meşə Atlazları, əsas məlumatları dəyişdirmədən fərqli dillərdə (ümumiyyətlə Fransız və İngilis dillərində) təbəqələr göstərə bilir. Veb tətbiqlərində istifadə olunan məlumatlar sinxronizasiya zamanı yenidən işlənir və serverdə daha sürətli göstərilməsini və yükün azalmasını təmin etmək üçün birbaşa Web Mercator proyeksiyasında saxlanılır, eyni zamanda lokal proyeksiyada ayrı bir nüsxə Açıq Məlumat Saytı vasitəsilə paylanmaq üçün saxlanılır.

    3. GFW Xəritə Oluşturucusu

    Forest Atlases, GFW -nin bu yaxınlarda ictimaiyyətə təqdim etdiyi Map Builder vasitəsi ilə nəşr olunur. Hər kəsə GFW -nin coğrafi analiz xüsusiyyətləri ilə birlikdə öz məlumatlarından istifadə edərək öz meşə monitorinq veb saytını yaratmağa imkan verir. GFW, ArcGIS online -a əsaslanan bu veb tətbiq şablonunu inkişaf etdirmək üçün Blue Raster ilə birlikdə çalışdı və MIT lisenziyası altında nəşr olundu, buna görə də hər hansı bir təşkilat istənilən coğrafi miqyasda xüsusi məlumatlarla öz meşə monitorinq platformasını yarada bilər. İstifadəçilər həm ArcGIS online, həm də Server üçün ArcGIS Portalında Map Builder tətbiq edə bilərlər.

    İstifadəçilər, loqotipi və markalaşmanı dəyişdirərək, xüsusi məlumatları bağlayaraq, xəritəni unikal bir maraq sahəsinə və ya müəyyən bir mövzu üçün üslub məlumatlarına yönəldərək veb tətbiqlərini fərdiləşdirə bilərlər. Fərqli tətbiqlər bir -birinə bağlanaraq hərtərəfli bir atlas meydana gətirə bilər.

    Yeni şablona ArcGIS Online vasitəsilə daxil ola bilərsiniz. Mənbə kodu Github -da yerləşir. GFW Map Builder-dən istifadə haqqında daha çox məlumat əldə etmək üçün GFW How-To səhifəsinə daxil olun.

    4. ArcGIS Açıq Məlumatları

    Forest Atlas məlumatlarını ictimaiyyətə yaymaq üçün meşə nazirlikləri ArcGIS Açıq Məlumatlarına etibar edirlər. Meşə Atlası istifadə edən hər bir nazirliyin özünün Açıq Məlumat Saytı var ki, burada hamıya açıq olmaq üçün öz coğrafi məlumatlarını, eləcə də meşə təsərrüfatı müqavilələri, hesabatlar və digər nəşrlər kimi əlavə mənbələri dərc edir. Açıq Məlumat Saytları vasitəsi ilə yayılan məlumatlar hərtərəfli metadata ilə birlikdə orijinal proqnozlarında nəşr olunur. İngilis və Fransız dillərində məlumatlar ayrı -ayrı açıq məlumatlar saytlarından istifadə etməklə seçilir.

    İstifadəçilər məlumatları açar sözə, tam mətnə ​​və ya yerə görə axtarıb istədikləri məlumatları yükləyə bilərlər. Veb tərtibatçıları tətbiqlərində istifadə etmək üçün lazım olan API son nöqtələrini tapa bilərlər.

    Fərqli göstərilmədiyi təqdirdə, bütün məlumatlar CC-by-4.0 lisenziyası altında istifadəçilərə məlumatları istifadə etməyə və yenidən paylamağa imkan verir.

    Öz GFW ilə işə başlayın

    Hər bir Konqo Hövzəsi Meşə Atlasının uğuru, güclü GIS təhlili ilə birlikdə milli miqyasda meşələrin idarə olunmasını necə yaxşılaşdıra biləcəyini nümayiş etdirir. GFW Map Builder kimi açıq mənbə vasitələri ilə Forest Atlas kimi bu tətbiqlər həmişəkindən daha sürətli və daha asan ölçüyə gələ bilər. Bəs gözləmə nədir? Bu gün öz GFW qurmağa başlayın!

    Bənzər ehtiyacları olan hər kəs üçün kömək etmək üçün bəzi açıq mənbəli şablonlar və vasitələr:

    Tomas Qida, Meşə və Su Proqramı üzrə GIS köməkçisidir. Mərkəzi Afrikadakı meşə təşəbbüsü işinin GIS, uzaqdan algılama, verilənlər bazası və veb sayt komponentlərinə rəhbərlik edir.

    Asa Qida, Meşə və Su Proqramı çərçivəsində Qlobal Meşə İzləmə (GFW) üzrə GIS Tədqiqat köməkçisidir. Asa, GFW platforması üçün coğrafi məlumatların əldə edilməsi və hazırlanmasında və GFW platformasında məlumat idarəetməsinin səmərəliliyinin artırılmasında iştirak edir.


    Ümumi Xəritəçəkmə Alətlərinə Giriş (GMT)

    Bu mühazirə, burada tapa biləcəyiniz rəsmi GMT tutorialındakı materialın kiçik bir alt hissəsindən dəyişdirilmişdir: GMT Tutorial.

    Bugünkü mühazirə Ümumi Xəritəçəkmə Alətləri proqramı olaraq da bilinən GMT -yə yönəlib. GMT 1988 -ci ildə iki LDEO aspirantı Paul Wessel və Walter H.F.Smit tərəfindən icad edilmişdir. GMT, məlumatları oxumaq və qurmaq da daxil olmaqla, geniş bir funksiyanı yerinə yetirə bilər, lakin bu günün ən unikal və ən güclü istifadəsi mürəkkəb xəritə proyeksiyaları və vizualizasiyalar yaratmaq qabiliyyətindədir. Məlumatların hazırlanması MATLAB və Python ilə olduqca sadə olduğundan, bunun əvəzinə burada GMT -də mövcud olan çox yönlü Xəritəçəkmə funksiyalarına diqqət yetirəcəyik.

    GMT, Unix əsaslı bir proqram vasitələri dəstidir və onunla bu kursun əvvəlində Unix əmrləri ilə necə qarşılıqlı əlaqə qurduğumuz kimi, bir komanda qabığı vasitəsi ilə qarşılıqlı əlaqə quracağıq.

    GMT -ni yükləyərkən Sənədlər qovluğunu əldə etməlisiniz. Aşağıdakı məzmunlara malikdir

    HTML və pdf qovluqlarında GMT sənədləri var. Tam GMT_Tutorial ilə bir PDF faylı pdf qovluğunda tapıla bilər. Dərslik kataloqundakı maddələrlə işləyəcəyik. Bu kataloqun bir nüsxəsini çıxarmağı və orijinaldan çox nüsxədə işləməyi məsləhət görürəm.

    GMT 5.4.2 tətbiqini açın və yeni bir terminal qabığı işə salacaq. Sonra CD -ni Documentation qovluğuna daxil edin və surətini çıxarın:

    Qeyd edək ki, -R cp -ə rekursiv olaraq qovluğu kopyalamağı bildirir.

    Tipik GMT iş axını, bir ascii və ya ikili məlumat cədvəli və ya cızılmış məlumat dəsti (məsələn, topoqrafiya və ya digər səthlər) kimi əlavə faylları GMT -yə daxil etməkdən ibarətdir. GMT daha sonra GMT əmrlərinizin ardıcıllığından asılı olaraq faylı işləyəcək və sonra bir və ya daha çox fayl çıxaracaq. Tipik olaraq bir postscript (.ps) və ya .pdf süjet faylı çıxaracaqsınız, ancaq GMT-dən məlumat fayllarını yenidən grid etmək və ya yenidən formatlaşdırmaq üçün də istifadə edə bilərsiniz, buna görə də bəzən asılı olaraq yenidən gridlənmiş və ya işlənmiş məlumat fayllarını çıxaracaq. necə istifadə edirsən.

    GMT skriptlərimizi qurarkən fayl yönləndirmə, boru kəməri və joker kimi bir neçə Unix ümumi əmrindən istifadə edəcəyik.

    GMT onlayn veb sənədləri, GMT əmrlərini öyrənmək üçün əla bir qaynaqdır. Orada xüsusi GMT əmrləri üçün kömək səhifələri tapa bilərsiniz. Bununla birlikdə, kömək səhifələri hər əmr üçün mümkün olan hər şeyi söylədikləri üçün çox çətin ola bilər. Bir skriptdə istifadə olunan bir əmri görmək çox vaxt faydalıdır. Mütləq yoxlamağı məsləhət görürəm QalereyaYemək kitabı Onlarla nümunə olduğu üçün onlayn sənədlərdəki bölmələr. Etmək istədiyinizə bənzər birini tapmaq üçün şəkillərə baxın və sonra süjet yaratmaq üçün istifadə olunan əlaqəli GMT əmrlərini görmək üçün linki vurun.

    GMT əmrləri haqqında daha çox məlumatı GMT qabığından öyrənə bilərsiniz. Misal üçün

    bütün mövcud GMT əmrlərini siyahıya alır. Verilmiş GMT modulu üçün kömək əmrləri ilə birlikdə verilmişdir

    burada & ltmodule_name & gt xüsusi modul adı ilə əvəz olunmalıdır.

    Sadə Plotting

    Xəritə xəritəsinin hazırlanmasının ən vacib hissəsi, kürənin səthində yerləşən mövqeləri düz bir təsvirə çevirmək üçün istifadə edilən proyeksiyadır. GMT çox sayda xəritə proqnozunu dəstəkləyir. Burada onların az bir hissəsinə baxacağıq.

    Tipik olaraq, bir GMT əmri belə görünən bir zəng ardıcıllığına malikdir:

    burada & ltmodule_name & gt çağırmaq üçün xüsusi GMT əmrini, & ltoptions & gt isə tələb olunan və isteğe bağlı arqumentləri sadalayır. GMT çox güclü olsa da, yeni istifadəçilər üçün olduqca qorxunc ola biləcək çoxlu variantlara malikdir. Yenə də nümunə ilə öyrənmək, ən azından yeni başlayanda sənədlərə müraciət etməkdən daha asandır. İstinad üçün, bəzi standart variantlara baxmaq üçün gözəl bir yerə bir keçid var.

    & Gt outputFileName.ps hissəsi, GMT -ə nəticələriFotFileName.ps adlı fayla çıxarmasını bildirmək üçün Unix yönləndirmə simvolunu və gt istifadə edir. Hansı ki, bir poscript formatlı sənəddir (PDF formatının xəbərçisi olan erkən vektor qrafik faylı).

    Əsas bir xəritə sahəsi yaratmaq üçün "postscript base map" üçün stenoqrafiya olan psbasemap əmrindən istifadə edirsiniz. Məsələn, əmri işlədin:

    Faylı tıklayaraq və ya qabığa açıq GMT_tut_1.ps yazaraq nəticələri görə bilərsiniz.

    Burada dörd ümumi standart seçimdən istifadə etdik: -R, -J, -B, -P.

    -R -Rxmin/xmax/ymin/ymax sintaksisi ilə qurulacaq maraq bölgəsini təyin edir. Tipik olaraq xmin və xmax minimum və maksimum uzunluqları, ymin və ymax isə minimum və maksimum enləri təyin edərdi.

    -J istifadə ediləcək xəritə proyeksiyasını təyin edir və -JXwidth [/height] sintaksisinə malikdir. Burada -JX ümumi kartezyen süjetdən (yəni coğrafi olmayan proyeksiyadan) istifadə etmək deməkdir. Sahəni -JX4i/3i deyərək 4 düym enində və 3 düym hündürlüyə gətirməyi təyin etdik.

    -B süjet oxlarında istifadə ediləcək şərhləri təyin edir. Burada a -nın GMT -yə ən yaxşı şərhləri avtomatik təyin etməsini söylədiyi -Ba istifadə etdik. İndi istifadə edərək əmrin daha inkişaf etmiş bir versiyasını sınayın

    Burada əlavə -B arqumentləri GMT -yə baltaları ( +g) açıq rənglə doldurmağı və başlığı ( +t) "İlk süjetim" halına gətirməsini bildirir. Ətraflı izahat və -B üçün digər mümkün variantların hücumu üçün köməyə baxın.

    -P Səhifənin portret rejiminə qurulduğunu, varsayılan olaraq mənzərə rejimində qurduğunu bildirir. Bunu əhatə etməyə vaxtımız yoxdur, ancaq ev qovluğundakı gmt.conf faylını istifadə edərək GMT -nin standart davranışlarından hər hansı birini dəyişə bilərsiniz. Ətraflı məlumat üçün GMT yardımına baxın.

    Sahil xətlərinin çəkilməsi

    Burada sahil xətləri, çaylar, göllər və milli sərhədləri olan xəritə sahələri hazırlamaq üçün pscoast əmrindən istifadə edəcəyik. Bu coğrafi məlumat GMT-də GSHHG verilənlər bazası ilə (Qlobal Öz-özünə Uyğun, İerarxik, Yüksək Çözünürlüklü Coğrafiya Veritabanı) daxil edilmişdir.

    Bu əmri işə salmağa və çıxışı görməyə çalışın:

    Burada -JM6i, GMT -yə 6 düym genişlikdə bir süjet hazırlamaq üçün uyğun bir Mercator proyeksiyasından istifadə etməsini söyləyir.

    Seçim Məqsəd
    -A Kiçik xüsusiyyətləri və ya yüksək hiyerarşik səviyyələri istisna edin
    -D Məlumat qətnaməsini seçin (tam, yüksək, orta, aşağı və ya xam)
    -G Quru sahələrin rəngini təyin edin (standart rəngləmir)
    -Mən Çayları çəkin (bir və ya daha çox iyerarxik kateqoriyadan xüsusiyyətləri seçin)
    -L Süjet xəritəsi miqyası (uzunluq miqyası km, mil və ya dəniz mili ola bilər)
    -N Siyasi sərhədləri çəkin (ABŞ əyalət sərhədləri daxil olmaqla)
    -S Yaş sahələr üçün rəng təyin edin (standart rəngləmir)
    -W Sahil xətləri çəkin və qələm qalınlığını təyin edin

    -W, -G, -S -dən biri seçilməlidir. Məsələn, sahil xətti sərhəd məlumatlarını tam həll etmək üçün -Df istifadə edin (və çıxış faylının ölçüsünün nə qədər böyük olduğunu qeyd edin). Bir çox variantı işə salmağa çalışaq:

    GMT standartlarını dəyişdirmək

    Gmtset əmrini istifadə edərək, cari shell sessiyası üçün GMT standartlarını müvəqqəti olaraq dəyişə bilərsiniz. GMT üçün bütün standart ayarları görmək üçün gmtdefaults yazın. Xəritələri GMT -nin standart olaraq istifadə etdiyi ağ və qara dama taxtasından daha çox çərçivə üçün düz bir xətt ilə qurmaq istədiyinizi düşünün. Bu əmri daxil edərək bu standartı dəyişə bilərsiniz:

    Bəzi Digər Proqnozlar

    Burada daha bir neçə proyeksiya nümunəsi var. Burada göstərəcəyimiz yerdən daha çox proyeksiya variantları var, buna görə də daha çox məlumat üçün sənədlərə baxın.

    Qütb stereoqrafik proyeksiyası:

    Qlobal proyeksiya variantlarından bir neçəsi:

    Xətlər və Nişanlar

    Burada GMT -dən xətləri, simvolları və mətni qurmaq üçün necə istifadə edəcəyimizi öyrənəcəyik. İki əsas müvafiq əmr, xətləri və simvolları çəkmək üçün psxy və süjetlərə mətn etiketləri əlavə etmək üçün pstextdir. Bu əmrlərin ton və ton variantları var, ancaq burada onların sadə istifadəsini əhatə edəcəyik.

    Dərslik üçün əvvəlcə dərslik qovluğundakı fayl məlumatlarında olan məlumatları quracağıq. Buradakı məlumatlara bir göz atın:

    Beləliklə, bu faylda 1 -dən 5 -ə qədər olan iki ədəd sütunu var. GMT -nin bu fayl haqqında nə düşündüyünü görmək üçün də info əmrindən istifadə edə bilərik:

    GMT, hər bir sütunda 1 -dən 5 -ə qədər olan N = 7 satır olduğunu görür. Psxy istifadə edərək məlumatları çəkin:

    Varsayılan olaraq, GMT bunu bir xətt olaraq qurdu. -W arqumentlərindən istifadə edərək xəttin görünüşünü dəyişə bilərik:

    Burada 2 ballıq qalınlığı istifadə etməyi və xətti yaşıl rəngə boyamağı söylədim. Doldurma rəngi ilə -G arqumentini istifadə edərək, xətti doldurulmuş çoxbucaqlı olaraq da qura bilərik:

    İndi məlumatdakı hər (x, y) mövqeyi üçün simvollar quraq:

    Burada -S arqumenti psxy -yə məlumatları simvol şəklində qurmağı və i -Si -də ters çevrilmiş üçbucaqlardan istifadə etməyi söyləyir. Mümkün olan bütün digər simvol növləri haqqında öyrənmək üçün psxy yardımına baxın. 0.2i hissəsi, simvolların 0.2 düym ölçüsündə olmasını söyləyir.

    İndi həm xətti, həm də simvolları quraq. Bunu etmək üçün əvvəlcə xətti qurun, sonra simvolları üst üstə əlavə edin:

    Birinci sətirdə GM -ə əlavə əlavələr üçün faylın açıq qalmasını bildirən -K arqumentinə diqqət yetirin. Sonra ikinci sətirdə -O arqumentindən istifadə edərək GMT -yə üçbucaqları üst -üstə düşmə rejiminə əlavə etməsini söylədik. Faylın üstünə yazmaq əvəzinə, süjet faylına üst qat əlavə edən Unix & gt & gt əlavə operatorundan da istifadə etdik.

    Now we will make a plot of earthquakes around Japan where the color of the symbol indicates depth and the size of the symbol indicates magnitude. See file quakes.ngdc :

    The first line above makes are color palette of red, green and blue for earthquakes with depths from 0 to 70, 70 to 300 and greater than 300 km depth. The second line creates a plot of northern Japan's outline. The third line plots the earthquakes. -h3 tells GMT to skip the first three header lines. -i4,3,5,6s0.1 tells it to read columns 5,4,6,7 (note it uses 0 based indexing!) and to scale the values in the 7th column by 0.1. Since the 7th column is the earthquake magnitude, this converts it to a number that will be useful to use as the centimeter size of the symbols. -Scc tells it to plot the symbols as circles using centimeters as the size units.

    We don't have time to cover pstext , but it uses similar syntax. See the examples in the GMT tutorial and online cookbook for further info.

    Gridded Surfaces

    Here we will use GMT to create a shaded map plot of gridded topography data. We will use the file tutorial file us.nc , which contains a subset of high-resolution topography data from the global 30” DEM called SRTM30+ (SRTM stands for the shuttle radar topography mission).

    Let's peek inside this file to see what it contains. Since this is a binary format, we can't open it in a text editor. Instead we use GMT's grdinfo command:

    Here you can see that the file goes from -108 to -103º longitude and 35 to 40º latitude, with z spanning from 1052 to 4328 m.

    GMT has many built in color palettes (CPT's) that you can use for your colormap on shaded plots. You can also download some really nice freely available ones (see http://soliton.vm.bytemark.co.uk/pub/cpt-city/). Here we will use GMT's rainbow color palette to create a colormap that spans the z range of the data in us.nc using the makecpt command:

    This command mapped GMT's rainbow color palette to the elevations 1000 to 5000 ( -T command) and made the color scale have continuous shading ( -Z ) rather than the default which is discrete shaded colors. The output was saved to file topo.cpt .

    Now let's make a shaded figure of this data.

    Take a look at that figure. It looks okay, but there is no illumination to create shadows that help define the topography, so it looks quite flat.

    You can add illumination to your GMT map plots by first computing the gradient of the topography using the grdgradient command. The gradients are then used to shade the topography:

    Here we used grdgradient to output the gradients to file us_i.nc using the -G argument. We then included the gradient data in the grdimage command using thhe -I flag. Also note the new use of the -K flag in the grdimage line. That flag tells GMT to keep the file open for further additions. We then used the psscale command to add a colorscale to the top of the figure. Note that psscale was called with the -O option, which means overlay it on top of the previously plotted stuff. We also used >> for the redirection, which tells GMT to append the color scale to the previously plotted file. Getting the syntax write for these types of multilayered plots can be tricky, so study the examples on the GMT help carefully. See also the help for psscale for more info.

    We don't have time to cover this, but you could create contours for topography using the grdcontour command. There are lots more useful GMT commands but we are out of time, so go checkout the GMT cookbook examples for further knowledge.

    Closing Comments

    GMT is really powerful but the calling sequences can be highly cryptic. Check out the online examples and cookbook as useful starting places.

    Son Mesajlar

    • bash
    • file system
    • piton
    • proqramlaşdırma
    • qabıq
    • unix
    • assignment
    • pandas
    • xarray
    • MATLAB
    • vizualizasiya
    • GMT
    • habanero
    • git
    • çoxluq
    • parallel computing
    • fortran
    • qablaşdırma
    • vpn
    • source code editor
    • versiya nəzarəti
    • mapping
    • baza xəritəsi
    • ndarray
    • əsəbi
    • matplotlib
    • parallel programming
    • arrays
    • github
    • project
    • GeoMapApp
    • mpi
    • final
    • dask

    /> Content licensed under a Creative Commons Attribution-NonCommercial 4.0 International License, except where indicated otherwise.


    How to convert to web mercator projection using an open source tool? - Coğrafi İnformasiya Sistemləri

    Simple Gauss-Krüger transformation for C++

    This project provides a C++ implementation of coordinate transformation between geodetic coordinates and grid coordinates of Gauss (Transverse Mercator) projections, using the Krüger-n series developed to fourth order.

    A lot of inspiration comes from the Java implementation made by Kodapan, primarily in the way classes are used. That project is in turn a port of the Javascript implementation made by Arnold Andreasson. The equations and numbers used are directly based on the formulas published by Lantmäteriet (the Swedish National Land Survey), especially the document called Gauss Conformal Projection (Transverse Mercator) - Krüger's Formulas, published in 2008, and tests are implemented to check the calculations against reference points provided by Lantmäteriet.

    This C++ implementation was originally developed for coordinate conversion in the public transport application Fahrplan since using Proj4 seemed overly complex, and the intent is to make it simple to include in other projects wishing to use it. Although it was developed in a Swedish context, with Swedish coordinate systems to test with, it is thought to be useful also for other coordinate systems using the Gauss-Krüger projection.

    Except the library, a simple command line tool is included so you can play around with the transformations.

    The library itself requires no more than standard library components. To build the test, Boost Test is required, and for the command line tool, Boost Program Options is required (tested using version 1.54 of Boost).

    The library can be compiled and linked dynamically or statically, or included in your project as source code files. In the former cases, it has to be compiled first:

    The values in the following example are taken from Parametrar till approximativa transformationssamband för direktprojektion mellan SWEREF 99 och RT 90, published by Lantmäteriet (projection: 7.5 gon V 0:-15). If you have more than one projections using the same ellipsoid, the ellipsoid values can be put in a class of their own:

    Example of direct transformation from SWEREF 99 to RT90 (same values as from the library usage example):

    To see all options, run the tool without options or with --help :

    To verify the calculations, tests have been implemented to check the reference points provided by Lantmäteriet. The following documents have been used:


    Tools and products

    Open-source tools

    Most of the maps are based on OpenStreetMap data, some have additional Natural Earth data on lower zoom levels and town labels from Wikidata.

    • Streets - a general-purpose map with highlighted road infrastructure
    • Satellite - a mixture of satellite and aerial imagery with labels and streets from OSM
    • Basic - map containing only basic information
    • Dark and Light - derived from Basic, both map styles are designed to serve as a discreet background for additional geodata
    • Outdoor and Topo - maps with contour lines and hillshading, designed for movement in terrain
    • 3D - to show any of the map above in three dimensions

    Maps in custom coordinate systems

    MapTiler maps are provided in standard Mercator projection. For specific use-cases, there are maps based on OpenStreetMap in local coordinate systems, namely in:

    • WGS84
    • French Lambert
    • Swiss EPSG:2056
    • Dutch RD-New
    • . and others

    Maps from other open-data sources

    Apart from maps based on OSM, there are local maps based on government open-data:

    • Ordnance Survey maps of Great Britain
    • Map of Japan with government road data
    • Map of the Netherlands

    Choropleths

    In this post I will simultaneously have Fun With Data and Fun With Maps. I will use public APIs to turn my Isle of Alameda into a “choropleth“, a map which displays areas that are colored or patterned in relation to data.

    To do this I will need to find boundaries within Alameda that I can associate with data of some kind. For this I turn to the ultimate source of geographical data within the United States: the U. S. Census Bureau. To do its work the Census Bureau divides the country into regions, states, counties, cities, tracts, and block groups and gathers data at each level. The main island of Alameda is divided into fourteen tracts which in turn are divided into fifty block groups.

    All this data is free to the public and accessible via public APIs, but the government web sites are so sprawling and complex that most people access them through intermediary sites like Knight-Ridder’s Census Reporter. These sites do a great job at producing pre-made tables and choropleths, but I want to learn how to do it myself.

    Knight-Ridder’s Census Reporter

    After much hunting I find raw tract boundaries in a downloadable CSV file from the Alameda County Data Sharing Initiative. Using the Census Reporter site to identify tract numbers, I reduce the 372 tracts in Alameda County to the 14 on the main island of Alameda. Each tract boundary is defined by a long list of longitudes and latitudes.

    I can now pull up my own Alameda map outline in NodeBox. When I convert each list to X,Y coordinates and overlay the paths, they don’t quite fit at first. I spend hours muttering and pulling my hair until I realize that the formula I’m using does not properly account for the curvature of the earth. There are different ways of projecting coordinates onto a flat surface and when you get down to the street level you need to get everything exactly right – especially when overlaying boundaries from different sources.

    I got my original island boundary from Open Street Map. OSM stores its data using the same geographic coordinate system (EPSG 4326) used by GPS devices, but uses a different proqnozlaşdırılmışdır coordinate system (EPSG 3857) when creating its map tiles. To convert you need to use a spherical pseudo-Mercator projection (not the true oblate ellipsoid Mercator projection). Qarışıqsınız? I was – as were many others before me. Fortunately the correct formula (in many different programming languages) appears on the Open Street Map Wiki:

    Formula for converting latitude and longitude

    Note: the constant 6,378,137 in the formula is the idealized radius of the earth in meters. Formulas without this value did not work for me.

    With the right formula in place, the tract boundaries snap perfectly into position. The boundaries extend beyond the shore, but for now are sufficient to verify proper alignment:

    NodeBox display of tract boundary allignment

    Choropleths convey more information (and look cooler) when you divide the map into smaller pieces. So having cracked the code for tracts, I now turn my attention to the smallest unit used for census data: block groups.

    Finding block group boundaries expressed in pure latitudes and longitudes proves to be more difficult. I finally turn to the government’s TIGER site (Topologically Integrated Geographic Encoding and Referencing), but here I run into another problem. The boundary data is only available in shp files, which require a powerful application called arcGIS. This is what the big boys use, but I want to draw the boundaries myself.

    My solution is to convert the shp file into GeoJSON format which I can then parse using NodeBox. I try a free online conversion service, but it doesn’t work. I locate an open source library that would do the job, but don’t feel like mucking about in javascript. I finally turn to a service called MyGeodata Cloud. The first five megs are free my 11 meg file costs $3.55 – a fair price for the time saved.

    Parsing the data was a multi-step process. The original file contained 31,647 boundaries, one for each block fragment in Alameda County. Using zip code data, I identify the 14 tracts on the island and use that list to filter the data down to a mere 1298 block fragments. I then group those block fragments into 282 blocks and those blocks into 50 block groups. Here is the NodeBox network I made to do the parsing:

    NodeBox network which converts a GeoJSON file into a CSV

    And here is what all those block fragments look like before I group them into block groups and trim them to fit the outline of the island:

    NodeBox display of randomly colored block fragments

    The final step, trimming the boundaries, takes some time and patience. The basic technique is to take the intersection of one shape, like a block group, with a second shape, like the island outline. But when you look closely you see that some of the defined boundaries only approximate the true shape of the island, leaving little slivers of leftover space here and there. To fix this I have to increase the area by doing a union with an arbitrary rectangle and then do an intersection to trim it back to the exact shoreline.

    There are also some peculiarities. A tiny triangular corner of the island actually resides in San Francisco County. Since this is uninhabited marshland it cannot affect the data so I add it to the nearest block group. Another group has an absurdly narrow tongue which sticks up along the median of a street separating two other groups, creating a distracting mess. I quietly trim it away. This is the kind of thing you have to do when cleaning any dataset. The difference here is that instead of correcting numbers, you are correcting shapes. Here is the final result, slightly exploded to better show each block group boundary:

    NodeBox display of exploded block group boundaries

    Now that I finally have the boundaries of my choropleth it’s time to find data to color them with. The place to find that is a government site called the American Fact Finder. This site contains many different data sources or “programs”. In addition to the Decennial Census, there are housing surveys, commodity flow surveys, employer statistics, and much more.

    The Census Bureau’s American Fact Finder website

    I choose a source called the American Community Survey, the largest household survey the Census Bureau administers. Unlike the decennial census, it does not count everyone it uses a statistical sample to estimate information based on surveys sent to 3.5 million households per year. So it’s not as accurate as the full census, but is more up to date. The estimates are quite reliable on a large scale, but can have a significant margin of error when applied at the block group level.

    I select the 2015 5-year survey applied at the block group level in Alameda county. This reduces the available data to 342 separate tables including Median Age by Sex, Travel Time to Work, Household Size, School Enrollment, Median Income, Number of Bedrooms, Aggregate Rent, and on and on. You can only download forty tables at a time so I pick a few at random.

    Using NodeBox I can easily read these tables, lookup individual values for each block group, and then color my block groups accordingly. Within minutes I am producing one choropleth after another:

    A selection of Alameda choropleths generated in NodeBox

    These maps may not seem all that interesting to you, but for someone like me who has lived on this island for twenty-five years they are fascinating. I can imagine hundreds of possible investigations. But for now I bask in the sheer power of effortlessly turning any random spreadsheet I come across into a gleaming, perfect choropleth.

    As a final flourish I will take this idea to the next level. Instead of coloring each block group a solid color, I can fill it with randomly scattered colored dots, one dot for each person on the island. There are 63,043 people living on the main island and I can assign each one a color based on their self-identified race. Our racial diversity is one of the things I like about Alameda it’s nice to finally see it in a single image:

    NodeBox map of self-identified race in Alameda

    I hope you have enjoyed this experiment. Open source mapping has become an energetic worldwide movement with a supportive community and many powerful tools. I have packed this post with links to help you get started on your own projects here are some more.

    For more tutorials see Mike Bostock’s Let’s Make a Map and Command-Line Cartography. D3 users should check out d3-geo, a library to convert GeoJSON to SVG paths. Leaflet is another javascript library which you can use to make mobile interactive “slippy maps“. Mapbox is a popular source of maps and tools for building mapping applications. Friend of the lab Ed Jones edits Open Street Map data using the JOSM plugin and uses the Street Map Plugin for UE4 to create 3D renderings.


    Converting Topo50 coordinates

    Learn how to convert Topo50 coordinates to other projections.

    The projection and datum used to produce Topo50 and Topo250 maps is the New Zealand Transverse Mercator 2000 (NZTM2000) projection and the New Zealand Geodetic Datum 2000 (NZGD2000).

    These are different to the pre 2009 topographic map series, NZMS260 and NZMS262, which were produced using the New Zealand Map Grid (NZMG) projection and the New Zealand Geodetic Datum 1949 (NZGD1949) datum.

    Converting coordinates

    Basic conversions - to convert individual coordinates between commonly used datums and projections (including those used in the Topo50 and NZMS260 maps), you can either:

    Detailed conversions - to convert coordinates between a wider range of datums, projections and height systems, and make use of format options such as bulk conversions, you can either:

    Note: Using these detailed tools requires a working understanding of coordinate and height conversions.

    Xidmətin pozulması

    Over the last couple of days the server that runs the Geodetic Database and the Online Coordinate Converter has become unstable. As a result the server has to be rebuilt. We are working to do this as quickly as possible. In the meantime you can use these alternate links:

    Please sign up to our mailing list if you wish to receive an email notification when the service is back up and running.
    LINZ Geodetic Notifications