Daha çox

Çoxbucaqlı olaraq geojsonda çoxbucaqlı ixrac edin


Hər kəs bilir ki, geojsonda çoxbucaqlı olaraq çoxbucaqlı bir təbəqə ixrac etməyin bir yolu varmı?

Çoxpoliqalı bir şəkil faylım var. Ancaq tək və çoxbucaqlılar var.

Geojson -a ixrac edərkən hər iki quruluşa sahib oldum: tək xüsusiyyətli çoxbucaqlar çoxbucaqlı olaraq ixrac olunur (3 sıra ilə)

"tip": "Çoxbucaqlı", "koordinatlar": [[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]], [[100.2, 0.2 ], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]

Və bir neçə xüsusiyyətdən əmələ gələn bəzi çoxbucaqlılar dörd çoxluqlu çoxbucaqlı olaraq ixrac olunur:

"type": "MultiPolygon", "koordinatlar": [[[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]], [[[ 100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]], [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [ 100.2, 0.8], [100.2, 0.2]]]]

Ehtiyacım, ikinci quruluşlu çoxbucaqlıları və çoxbucaqlıları göstərən bir geojson əldə etməkdir (dörd sıra)

Mümkünsə hər kəs mənə deyə bilərmi və ya bunun necə ediləcəyinə dair hər hansı bir ipucu?


"Yeni qat növü" ilə müəyyən edərək bütün məlumatlarınızı ogr2ogr ilə çoxbucaqlılara çevirə bilərsiniz-nlt MULTIPOLYGON. Ancaq çoxbucaqlının yalnız bir hissəsi olduqda nəticənin tam olaraq inandığınız kimi olub olmadığını bilmirəm.

Bu çoxbucaqlı bir üçbucaqdır

{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {}, "geometry": {"type": "Polygon", "coordinates": [[[[ 95.0, 216.0], [241.0, 253.0], [175.0, 138.0], [95.0, 216.0]]}}}}}

Bu çoxbucaqlı ilə eyni üçbucaqdır

{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {}, "geometry": {"type": "MultiPolygon", "koordinatlar": [[[[ [95.0, 216.0], [241.0, 253.0], [175.0, 138.0], [95.0, 216.0]]]}}}}}

EDIT

Ancaq məqsəd, həm çoxbucaqlı, həm də çoxbucaqlı olan bütün ayrı -ayrı xüsusiyyətləri çoxpoliqon tipli bir xüsusiyyətə birləşdirməkdirsə, bir birlik qurmalısınız. Çoxbucaqlı və çoxbucaqlı qarışığınız "mix.shp" faylındadırsa, istifadə etmək əmri belədir:

ogr2ogr -f geojson union.json mix.shp -dialect sqlite -sql "mixdən st_union (həndəsə) seçin"

"Union.json" nəticəsi, ogr2ogr hesabatından göründüyü kimi bir çoxbucaqlıdır:

Layerin adı: OGRGeoJSON Həndəsəsi: Çox Poliqonlu Xüsusiyyət Sayısı: 1… OGRFeature (OGRGeoJSON): 0 MULTIPOLYGON (((125 229,185 289,252 234,208 169,125 229)),…

Geojsonunuzu postgis -dən ixrac edirsinizsə, çoxbucaqlı olsanız bu xüsusiyyətin MULTIPOLYGON, bir xətt olduğu təqdirdə MULTILINESTRING olmasını təmin etmək üçün ST_MULTI funksiyasından istifadə edə bilərsiniz.

SEÇ ST_AsGeoJSON (ST_Multi (geom)) :: json FROM table WHERE id = 0;

Redaktə edin: postgisdən geosonda bir xüsusiyyət çıxarmaq texnikası bir az "toxunur":

SELECT row_to_json (fc) FROM (SELECT 'FeatureCollection' Type as, array_to_json (array_agg (f)) FROM (SELECT 'Feature' As As, ST_AsGeoJSON (ST_Multi (lg.geom)) :: json Geometry, row_to_json field1, field2, fieldx)) Cədvəldən xassələr kimi lg) As f) As fc kimi;

hər bir xüsusiyyətin MULTIPOLYGON olmasını təmin etmək üçün ST_MULTI istifadə etdiyimizi görürük. Cədvəl adını və sorğudakı sahələrin adlarını uyğunlaşdırmalısınız.


Raylarda GIS

Coğrafi məlumatlar ilə məşğul olmaq çətindir və eyni zamanda əyləncəlidir. Bunu ilk dəfə edən inkişaf etdiricilər bəzi yol maneəçilərinə girə bilər, ancaq irəlilədikcə öyrənməkdən zövq alır. GIS, coğrafi məlumatların toplanması, xəritələndirilməsi və təhlili ilə məşğul olan Coğrafi məlumat sistemini ifadə edir. Ancaq göründüyü qədər asan deyil. Layihəmdə son vaxtlar qarşılaşdığım çətinlikləri sizə izah etməyə icazə verin:

Tələb: Mövcud çoxbucaqlı məlumatlarını və çoxluqla birlikdə enlem və uzunluq verilən xəritəni idxal edin.

Çağırış-1: Əsasları və jargonu anlamaq

İlk dəfə etdiyim günah, nə SRID istifadə etməliyəm, hansı məlumat tipindən istifadə etməliyəm, hansı koordinat sistemindən istifadə etməliyəm? Hərtərəfli araşdırmalardan sonra sonda srid 4326, çoxqatlı məlumat tipini və WGS 84 koordinat sistemini istifadə edirəm.

Bir çoxlarınız WGS 84 nə demək olduğunu başa düşə bilməzsiniz? WGS 84, Dünya Geodeziya Sisteminin 1984 -cü ildə edilən bir növ araşdırmasıdır (standart). Hal -hazırda mövcud olan WGS 72, WGS 66 və WGS 60 və s. Kimi müxtəlif standartlar var. Bunlar sorğulardır (standartlar) bu illər ərzində yer haqqında bəzi fərziyyələr irəli sürərək həyata keçirilir. Məsələn, WGS 84 istifadə edərək Hindistan yerini hesablasaq, WGS 72 istifadə edərək hesablasaq fərqli ola bilər.

SRID, məkan məlumatlarını toplayarkən istifadə etdiyimiz koordinat sistemindən bəhs edən Məkan İstinad Sistemi Təminatçısı deməkdir.

Çağırış-2: Məlumat idxalı

Postgresql ilə işləyən relslərdən istifadə etdiyimiz üçün məlumatları verilənlər bazasına idxal etmək çox asandır, lakin əvvəllər heç görmədiyim geojson formatında məlumat əldə etdiyimiz üçün belə deyil. Xoşbəxtlikdən, yaqut, həyatımızı asanlaşdıran rgeo-json adlı bir daş təqdim edir. Geojson məlumatlarını idxal etmək üçün yazdığım kod parçası budur.

çoxbucaqlı bizim modelimizdir. Budur, köçürmə faylımız belə görünür:

Çağırış-3: sql sorğusundan istifadə edərək Polygon ilə xəritələşdirin

PostGIS, postgresin məkan hesablamaları aparmasına imkan verən bir postgres verilənlər bazası uzantısıdır. Bu nöqtəni tapmaq üçün st_contains funksiyasından istifadə etməli olduğumuz çoxbucaqlıdır. St_contains istifadə etmək üçün əvvəlcə iki həndəsənin eyni SRID -dən istifadə edib -etməyəcəyindən əmin olmalıyıq. Yəni bizim vəziyyətimizdə 4326 -dır. Verilənlər bazamda enlik və uzunluqları üzən sütunlar kimi saxladığımız üçün əvvəlcə onları yazmalıyıq. POINT olaraq SRID -i 4326 olaraq təyin edin:

İndi uyğun çoxbucaqlı tapmaq üçün son sorğu:

Tələbi yerinə yetirmək üçün vaxt lazım olsa da, amma sonunda etdiyimdən fərqli bir şey etdiyimi hiss etdim. Ümid edirəm ki, bu məqalə GIS haqqında bir az aydınlıq gətirəcəkdir.


Google xəritələrindən geojson əldə edin

Məlumat Qat | JavaScript API xəritələri, Bu nümunə, ya bir GeoJSON faylını, ya da bir GeoJSON mətni seçimini sürükleyip buraxmağa imkan verir. Xəritədə məlumat qatıyla necə işləmək barədə daha çox məlumat üçün google.maps -a baxın. callback.call (thisArg, geometry.get ()) Google Xəritə Məlumat Qatısı ixtiyari coğrafi məlumatlar (GeoJSON daxil olmaqla) üçün konteyner təmin edir. Veriləriniz Maps JavaScript API tətbiqinizlə eyni domendə yerləşdirilmiş bir faylda olarsa, map.data.loadGeoJson () metodundan istifadə edərək yükləyə bilərsiniz. Fayl eyni alanda olmalıdır, ancaq fərqli bir alt alanda yerləşdirə bilərsiniz.

Məlumat Layer: GeoJSON sürükleyin və buraxın, Beləliklə, bu yazı geoJSON koordinatlarını Google Maps React istifadə edərək çoxbucaqlar çəkmək üçün əldə etdiyim həll yollarından ibarət olacaq. Burada bir Yer Kimliyi Geokodlaşdırma Komponenti Məhdudlaşdırma Bölgə Kodu Biasing (ES) Bölgə Kodu Biasinq (ABŞ) İstiqamətləri Xidməti ilə Mətn İstiqamətləri Göstərilir SetPanel () İstiqamətlər Xidməti (Kompleks) ilə Səyahət Modları İstiqamətlərdə Yol Nöqtələri Çəkilə bilən istiqamətlər Məsafə Matrix Xidməti Yol boyu yüksəklik göstərən yüksəklik xidməti


Mapbox-gl-native-doğma Android, iOS, macOS, Node-da interaktiv, hərtərəfli özelleştirilebilir xəritələr

İnteraktiv, fərdiləşdirilə bilən vektor xəritələrini birdən çox platformada yerli tətbiqlərə yerləşdirmək üçün kitabxana. Mapbox Stil Spesifikasiyasına uyğun olan üslub cədvəllərini götürür, bunları Mapbox Vector Çini Spesifikasiyasına uyğun olan vektor plitələrə tətbiq edir və OpenGL istifadə edərək göstərir. Mapbox GL JS, Web-də istifadə üçün nəzərdə tutulmuş WebGL əsaslı həmkardır. Platformanız və ya hibrid tətbiq çərçivəniz burada qeyd edilməyibsə, standart Web imkanlarından istifadə edərək Mapbox GL JS-ni yerləşdirməyi düşünün.


1 Cavab 1

This.policyData 3 ölçülü bir mövqe dəstəyi olmadıqda, MultiPolygon sinifinə keçməməlidir. This.policyData bir sıra və ya xüsusiyyətlər toplusudursa, bunu birbaşa bu kimi məlumat mənbəyinə əlavə edə bilərsiniz .policyDataSource.add (this.policyData)

This.policyData çoxbucaqlı xüsusiyyətlər toplusudur və nədənsə onu çoxbucağa çevirmək istəyirsənsə (bunu niyə etmək istədiyini bilmirsən), hər bir çoxbucaqlı bir sıra yaratmaq və düzmək və koordinatlarını əlavə etmək məcburiyyətində qalacaqsan. serialın dəyərləri. Misal üçün:


GeoJSON nə üçün istifadə olunur?

GeoJSON sadə coğrafi xüsusiyyətləri və onların qeyri -məkan xüsusiyyətlərini əks etdirən açıq standart bir coğrafi məlumat mübadiləsi formatıdır. JavaScript Object Notation (JSON) əsasında GeoJSON müxtəlif coğrafi məlumat strukturlarını kodlaşdırmaq üçün bir formatdır. A əlavə edin GeoJSON faylı Map Viewer üçün bir qat olaraq.

İkincisi, bir GeoJSON faylını necə aça bilərəm? GeoJSON Drive ilə Xəritə Viewer. Doğrulamağa imkan verir GeoJSON və Google xəritəsində göstərin. Bacararsan GeoJSON fayllarını açın kompüterinizdən, Google Diskdən. GeoJSON Map Viewer, görüntüləyən bir vasitədir GeoJSON faylı brauzerinizdə.

Həm də bilin, JSON ilə GeoJSON arasındakı fərq nədir?

GeoJSON müxtəlif coğrafi məlumat strukturlarını kodlaşdırmaq üçün bir formatdır. A GeoJSON obyekt bir həndəsəni, bir xüsusiyyəti və ya xüsusiyyətlər toplusunu təmsil edə bilər. Tam GeoJSON məlumat quruluşu həmişə bir obyektdir (in JSON şərtlər). Daxilində GeoJSON, bir obyekt adlar/dəyər cütləri toplusundan ibarətdir - üzvlər də adlanır.

Çoxbucaqlı. A Çoxpoliqon elementləri çoxbucaqlı olan bir çox səthdir.


Spatial4j, ümumi məqsədli məkan / coğrafi ASL lisenziyalı açıq mənbə Java kitabxanasıdır. Əsas qabiliyyətləri 3 qatdır: ümumi coğrafi cəhətdən fərqlənən formalar təmin etmək, məsafə hesablamaları və digər riyaziyyat təmin etmək və WKT və GeoJSON kimi forma formatlarını oxumaq.

Bu doğma GDAL bağlayıcı ilə Node.js -dən raster və vektor coğrafi məlumat dəstlərini oxuyun və yazın. GDAL 2.0.1 (GEOS 3.4.2, Proj.4 4.8.0) paketlə gəlir, buna görə də node-gdal birbaşa qutudan kənarda işləyəcək. Başlamaq üçün API Sənədlərinə və ya nümunələrinə baxın. Bu bağlama Natural Atlas və Mapbox arasındakı əməkdaşlıqdır. İştirakçıları Brandon Reavis, Brian Reavis, Dane Springmeyer, Zac McCormick və başqalarıdır.


İndekslənmiş GeoSpatial Sorğular

Coğrafi məkan indeksi, coğrafi yardımçı funksiyaların köməyi ilə qurula bilən müxtəlif AQL sorğularını dəstəkləyir. Düzgün istifadə edilmək şərtilə, optimallaşdırıla bilən üç xüsusi geo funksiyası var: GEO_DISTANCE, GEO_CONTAINS, GEO_INTERSECTS. Əlavə olaraq, köhnə DISTANCE, NEAR və WITHIN coğrafi funksiyalarını optimallaşdırmaq üçün quraşdırılmış dəstək var (son ikisi yalnız 4 arqument versiyasında istifadə edildikdə məsafə Adı).

Sorğunuzun düzgün şəkildə optimallaşdırıldığına şübhə etdiyiniz halda, indeks istifadəsini yoxlamaq üçün AQL izahını yoxlayın.

Mənşəyə yaxın nəticələr üçün sorğu (NEAR tipli sorğu)

Mənşə nöqtəsinə yaxın nəticələr üçün əsas sorğu nümunəsi:

Birinci parametr bir GeoJSON obyekti və ya [uzunluq, enlik] sıralamasında bir koordinat dizisi ola bilər. İkinci parametr, indeksin yaradıldığı sənəd sahəsidir. GEO_DISTANCE funksiyası həmişə məsafəni metrlə qaytarır, buna görə də nəticələr bu vaxta qədər alınacaq 100km.

Origin yaxınlığında Sıralanmış Nəticələr üçün sorğu (NEAR tipli sorğu)

Mənşə nöqtəsinə ən yaxın 1000 nəticə üçün bir sorğunun əsas nümunəsi (artan sıralama):

Birinci parametr bir GeoJSON obyekti və ya [uzunluq, enlik] sıralamasında bir koordinat dizisi ola bilər. İkinci parametr, indeksin yaradıldığı sənədlər sahəsidir.

Nəticələri ən uzaqda da əldə edə bilərsiniz (məsafə azalan qaydada sıralanır):

Məsafədəki nəticələr üçün sorğu

Sənədləri bir qədər məsafədə qaytaran bir sorğu 1km və ya daha uzağa, qədər 100km mənşəyindən. Bu, göstərilən axtarış zolağında yerləşən GeoJSON dəyəri olan sənədləri qaytaracaq.

Çoxgəndəki nəticələr üçün sorğu

Saxlanılan həndəsəsi GeoJSON çoxbucaqlı olan sənədləri qaytaran sorğu.

GEO_CONTAINS -in ilk parametri çoxbucaqlı olmalıdır. Digər növlər etibarlı deyil. İkinci parametr, indeksin yaradıldığı sənəd sahəsini ehtiva etməlidir.

Çoxbucaqlı kəsişən nəticələr üçün sorğu

Sənədləri saxladıqları həndəsə ilə GeoJSON Polygonunun kəsişməsi ilə qaytaran sorğu.

GEO_INTERSECTS -in ilk parametri çoxbucaqlı olmalıdır. Digər növlər etibarlı deyil. İkinci parametr, indeksin yaradıldığı sənəd sahəsini ehtiva etməlidir.


Wp və ya geojson daxilində shp yazın

wkt və ya geojson formatında bir şəkil faylını (xətti) necə çevirə biləcəyimi bilən varmı?

Masaüstü ArcGIS 10.2 var.

DanPatterson_Re yorğun

bir çox 'dən' çevrilmələr. lakin 10.2 -dən istifadə edərək 'to' çevrilməsi ilə çox az ümid var. Yalnız Arc* dönüşümlərini axtarırsınız və ya kənarda başqa variantlara baxdınızmı?

Dan Patterson yazdı:

bir çox 'dən' çevrilmələr. lakin 10.2 -dən istifadə edərək 'to' çevrilməsi ilə çox az ümid var. Yalnız Arc* dönüşümlərini axtarırsınız və ya kənarda başqa variantlara baxdınızmı?

Əsasən, shp -ni proqnozlarla bağlı çox çevik olmayan bir proqramda idxal etməliyəm (Yalnız WGS84). Əslində bəzi şəkillərimi oxumuram. Buna görə mənə təklif etdilər ki, əgər mənim shp artıq WGS84 coğrafi koordinatlarındadırsa, wkt və ya geojson kimi minimalist bir formata ixrac etməliyəm və GIS -ə yenidən idxal etməliyəm və proyeksiyanı WGS84 (EPSG 4326) olaraq təyin etməliyəm.

Təcrübəmdən bəri bu fayl formatı haqqında heç eşitməmişəm, bir az araşdırma aparmışam və Phyton ilə bir şey edə biləcəyimə bənzəyirəm? Necə istifadə edəcəyim barədə heç bir məlumatım yoxdur, buna görə "Json to Features" konvertasiya vasitəsini istifadə etməyə çalışdım. ". doğru bir şey etdiyimdən əmin deyiləm, heç bir fərq yoxdur .. bu "dönüşüm vasitəsinin" şəkil sənədimə nə etdiyinə də əmin deyiləm. Bu nə üçündür?


11 Verilərin / məlumatların xüsusiyyətlərinə baxın

Pulsuz məlumatlardan istifadə edərkən, verilənlərin atributları çox fərqlidir. Məlumatları yüklədikdən sonra məlumatlarda hansı məlumatların olduğunu QGIS ilə yoxlamaq mümkündür. Burada Hamburqdan bir nümunə götürəcəyik. İstifadə etdiyimiz məlumatlar Hamburg vektor təbəqəsidir. Şəhərin bütün rayonlarını və rayonlarını ehtiva edir.

  1. Faylı QGIS -ə yükləyin
  2. Qatı sağa vurun. Menyuda & quotAtribut cədvəlini aç & quot
    1. Qatlamada olan bütün məlumatlar burada göstərilir

    Atributlara müəyyən əməliyyatları tətbiq etmək mümkündür. Bu şəkildə bir təbəqənin yalnız müəyyən hissələrindən istifadə etmək mümkündür. Aşağıdakı nümunədə Altona mahalını kəsəcəyik.

    1. Qatlamaya iki dəfə vurun
    2. & quot; Mənbə & quot pəncərəsində & quot; Məlumat təminatçısında obyekt filtri & quot; nişanı var. Sağ altdakı & quot; Sorğu yaradılması & quot; düyməsini basın
    3. & Quot; Sahələr & quot altında olan dialoqda & quotBezirk_Nam & quot; düyməsini iki dəfə vururuq
      1. Bir sahədə olan məlumatları dəyərlər pəncərəsində də görə bilərsiniz
      2. Bu ad artıq Provayderə Xüsusi Filter İfadəsi sahəsində göstərilir
      1. Məntiqi operatorlarla daha mürəkkəb bir sorğu yaratmaq mümkündür

      İpucu: QGIS versiyasından asılı olaraq, sorğu da fərqli görünə bilər. HVV və S-Bahn marşrutları olan bir SQL sorğusu kimi bir nümunə.