Daha çox

Nx_spatial bütün shapefile xüsusiyyətlərini oxumur


Bir yol şəbəkəsi üçün bir polyline shapefile var. Yollar hər kəsişmədə (qovşaqda) bölünür, məs. iki yol bir nöqtədə kəsilirsə, o zaman dörd keçişə (kənarlara) bölünürlər. Beləliklə, shapefile atribut cədvəlindən istifadə edərək, bu shapefile'nin 600 kənara sahib olduğunu bilirəm. Ancaq shapefile oxunduqdanx_ məkan, tapılan ümumi kənarları yalnız 497-dir. Digər 103 yol keçidinin (kənarlarının) niyə çatmadığını bilmək istərdim. Təşəkkürlər

nx_spatial olaraq ns yolları kimi idxal = ns.read_shp (yol) #path = polyline shapefile yollarına yol.number_of_edges () #output = 497

Ümid edirəm bu məlumat kömək edir: Windows7, Python 2.7 Anaconda 64bit, Eclipse. Problem nx_spatial ilə əlaqədardır. Ancaq aşağı nüfuz üçün belə bir etiket yarada bilmədim.


Bunun Python versiyanızla və ya OS ilə heç bir əlaqəsi yoxdur.

Python Networkx modulu (nx_spatial çox köhnədir, birbaşa NetworkX istifadə edin: read_shp) hər kəsişmədə xətləri kəsmir və xətt həndəsələrini başlanğıc və bitiş koordinatlarında sadələşdirir.

Şəbəkə şəkillərindən bir şəbəkə x.DiGraph yaradır. Nöqtə həndəsələri qovşaqlara, xətlər kənarlara çevrilir. Koordinat kanalları düymələr kimi istifadə olunur. Atributlar qorunur, xətt həndəsələri başlanğıc və bitiş koordinatlarında sadələşdirilir. Tək bir shapefile və ya bir çox shapefile qovluğunu qəbul edir.

Misal:

xüsusiyyətlərin sayı:

idxal fiona xüsusiyyətləri = fiona.open ('test.shp') çap len (xüsusiyyətlər) 5 xüsusiyyətlərdəki xüsusiyyət üçün: print feat ['geometry'] {'type': 'LineString', 'coordinates': [(3.0, 2.0 ), (2.0, 3.0), (2.0, 4.0)]} {'type': 'LineString', 'coordinates': [(1.0, 2.0), (2.0, 3.0), (3.0, 4.0)]} {' yazın ':' LineString ',' koordinatlar ': [(2.0, 1.0), (3.0, 2.0), (4.0, 2.0), (4.0, 4.0)]} {' type ':' LineString ',' coordinates '': [(1.0, 1.0), (2.0, 1.0), (3.0, 1.0)]} {'növ': 'LineString', 'koordinatlar': [(0.0, 0.0), (1.0, 1.0), (1.0, 2.0 ), (1.0, 4.0)]}

qovşaq və kənarların sayı:

nx kimi networkx idxal G = nx.read_shp ('test.shp') çap G.nodes () [(1.0, 2.0), (3.0, 2.0), (3.0, 1.0), (4.0, 4.0), (2.0, 1.0), (1.0, 1.0), (0.0, 0.0), (1.0, 4.0), (3.0, 4.0), (2.0, 4.0)] print len ​​(G.nodes ()) 10 print G.edges () [ ((1.0, 2.0), (3.0, 4.0)), ((3.0, 2.0), (2.0, 4.0)), ((2.0, 1.0), (4.0, 4.0)), ((1.0, 1.0), ( 3.0, 1.0)), ((0.0, 0.0), (1.0, 4.0))] çap len (G.edges ()) 5

G qrafasının kənarları:

İstədiyiniz bir Planar Qrafikdir:

Qraf nəzəriyyəsində planar qraf, müstəviyə yerləşdirilə bilən, yəni təyyarədə kənarları yalnız son nöqtələrində kəsişəcək şəkildə çəkilə bilən bir qrafikdir. Başqa sözlə, heç bir kənarın bir-birinə keçməyəcəyi şəkildə çəkilə bilər.

Planar Graph alqoritmi ilə nəticələnir (təəssüf ki, NetworkX modulu Planar Graph-ı dəstəkləmir)

xüsusiyyətləri = fiona.open ('test_Arc.shp') len (xüsusiyyətləri) 11 xüsusiyyətlərdəki xüsusiyyət üçün: çap feat ['həndəsə'] {'növ': 'LineString', 'koordinatlar': [(0.0, 0.0), ( 1.0, 1.0)]} {'type': 'LineString', 'coordinates': [(1.0, 1.0), (2.0, 1.0)]} {'type': 'LineString', 'coordinates': [(1.0, 1.0), (1.0, 2.0)]} {'type': 'LineString', 'coordinates': [(1.0, 2.0), (2.0, 3.0)]} {'type': 'LineString', 'coordinates': [(1.0, 2.0), (1.0, 4.0)]} {'type': 'LineString', 'coordinates': [(2.0, 1.0), (3.0, 1.0)]} {'type': 'LineString', 'koordinatlar': [(2.0, 1.0), (3.0, 2.0)]} {'type': 'LineString', 'coordinates': [(2.0, 3.0), (3.0, 4.0)]} {'type': 'LineString', 'koordinatlar': [(2.0, 3.0), (2.0, 4.0)]} {'type': 'LineString', 'coordinates': [(3.0, 2.0), (2.0, 3.0)]} { 'type': 'LineString', 'koordinatlar': [(3.0, 2.0), (4.0, 2.0), (4.0, 4.0)]}


Videoya baxın: Learn How to Perform Statistical Spatial Data Analysis with R and ArcGIS (Oktyabr 2021).