Daha çox

NumPyArrayToRaster istifadəsindən sonra səhv koordinatlar (…)


Hal-hazırda çalışdığım Layihəm, ArcPy istifadə edərək raster sənədlərdə hüceyrə dəyəri manipulyasiyasını təmin etməlidir. Dəyişdirilmiş raster görüntü üçün düzgün Y Dəyərləri (şimal dəyərləri) almadığım halda, Scriptim yaxşı işləyir. Mən sizə kodumu göstərəcəyəm:

# Arcpy modulu idxal arcpy # Lazım olan hər hansı bir lisenziyanı yoxlayın arcpy.CheckOutExtension ("3D") # Yerli dəyişənlər: inputRaster = r'G:  Data  filegdb.gdb  ClipRaster2 'firstCoord = "33321792 6012729" secondCoord = "33321809 6012763 "level =" 5 "outputRaster = r'G:  Data  filegdb.gdb  RasterModTestData2 '# Raster Təsvirini Alın: desc = arcpy.Describe (inputRaster) xmin = desc.extent.XMin xmax = desc.extent.XMax ymin = desc.extent.YMin ymax = desc.extent.YMax hücresiz = desc.meanCellWidth nodata = desc.noDataValue sr = desc.SpatialReference lowerleft = arcpy.Point (xmin, ymin) xwert1 = firstCoord.split ("") UTMRechts1 xwert1 [0]) UTMHoch1 = float (xwert1 [1]) xwert2 = secondCoord.split ("") UTMRechts2 = float (xwert2 [0]) UTMHoch2 = float (xwert2 [1]) # Rasteri NumPyArray rasterinə çevirir = arcpy.Raster (inputRaster) array = arcpy.RasterToNumPyArray (raster, nodata_to_value = raster.minimum) # NumPy-Array-dan keçin və nöqtənin sərhəd düzbucağının içində olub olmadığını yoxlayın i = ymin cou ntX = 0 while i  = UTMRechts1 and j <= UTMRechts2 and i> = UTMHoch1 and i <= UTMHoch2): array [countX, countY] + = int (level) countY + = 1 j + = cellsize countX + = 1 i + = cellsize newraster = arcpy.NumPyArrayToRaster (array, lowerleft, cellsize, cellsize, nodata) arcpy.DefineProjection_management (newraster, sr) if arcpy.Exists (output ): arcpy.Delete_management (outputRaster) newraster.save (outputRaster)

Gördüyünüz kimi, bir düzbucaqlı (aşağı sol: 33321792 6012729, yuxarı sağ: 33321809 6012763 // UTM 33N (ETRS89)) ilə məhdudlaşan sahə, hündürlüyünün 5 metr qaldırılması ilə dəyişdirilməlidir. Aşağıdakı ekran görüntüsü nəticə rasterindən bir çıxarış göstərir:

Təəssüf ki, dəyişdirilmiş sahənin sol alt küncü (33321792 6012708 metr UTM33N / ETRS89) və sağ yuxarı künc (33321809 6012743 metr UTM33N / ETRS89) səviyyəsindədir. Beləliklə, koordinatın şərqlənməsi tələb olunan dərəcədə mükəmməl şəkildə uyğunlaşır, lakin şimal təxminən 21 metr cənubda yer dəyişdirir. Giriş rasterində bir zolaq, 0,5 m bir hücrə və 2254 sütun və 2532 sətir var.

Əlavə məlumat: Haşiyə qutusunun içərisində olan koordinatları çap etsəm, sahib olmaq istədiyim dəyərlər görünür. Beləliklə, səhv NumpyArray-dan raster faylına çevrilməsindədir. Bu problemlə bağlı təcrübəsi varmı?

Dəyişdirilən sahənin düzgün dərəcəsini almaq və ya kodumdakı səhvi göstərmək üçün nə etməli olduğumu kimsə kömək edə bilərmi?


Problemimi təkbaşına həll etdim. Məsələ burasındadır ki, NumpyArray-a yenidən çevrilmə, yuxarı sol küncdəki [0,0] massivindəki massivi doldurmağa başlayır. Buna görə while-loopumu yenilədim:

i = ymax countX = 0 while i> = ymin: j = xmin countY = 0 while j <= xmax: if (j> = UTMRechts1 and j <= UTMRechts2 and i> = UTMHoch1 and i <= UTMHoch2): array [zaehlerX , zaehlerY] + = int (səviyyə) countY + = 1 j + = hüceyrə sayıX + = 1 i - = hüceyrə ölçüsü

Gördüyünüz kimi, maksimum Northing dəyərindən minimum dəyərə "sayaram". Bu vəziyyətdə dəyişdirilmiş sahənin düzgün mövqeyini alıram.


Mdhntd

Faydalanma üçün hansı fel "Dostluqda ________ istəmirəm" sözünə uyğundur?

1933-cü ildə Görünməz Adamın görünməz olduğunu necə lentə aldılar?

Niyə simvollar sözlə yazılmır?

İnsanlar yan tərəfə yıxılsaydı, göydələnlər yıxılarmı?

Bu ev qaydası, daha yüksək xarakter səviyyələrində cantrips-in artan təsirini aradan qaldırır?

Pəncərədən kənarda olan aktiv vəhşi təbiət - Pişik psixologiyası üçün yaxşı və ya pis

Alkoqollu kənd şənliyi

Sonlu qrupların otomorfizmləri və epimorfizmləri

Nə üçün SpaceX Afrikada yer gücləndiriciləri istehsal etmir?

Cəngavərin şahmatdakı hərəkətinin alt hissəsi.

İlk elmi fantastika və ya fantaziya çoxsaylı seçim kitabı nə idi?

Spin vəziyyətlərinin və fırlanma operatorlarının mövqe təmsilçiliyi

Mmorpg məlumatları necə saxlayır?

'Beş dəqiqəlik macəralı gün' sinif tarazlığını necə təsir edir?

Seçmə + haradasa nəticəsinə əsasən bir sütunu təxəllüs etmək mümkündürmü?

Qardaşının ofisinə daxil olması barədə CEO-ya məlumat vermək məsləhətdirmi?

Daha böyük bir maksimum ilə bir lens edir. diafraqma maksimumu daha kiçik olan bir lensdən daha sürətli fokuslanır diyafram?

"Vəziyyət bir böhrana hamilədir" demək yaxşıdırmı?

Uzun bir tökmə müddəti ilə bir sehr yazarkən bir tökücü təəccüblənərsə nə olar?

Riyaziyyat, bir konusa su tökülür: Niyə törəmə xətti deyil?

Pythona proyeksiya ilə rasteri necə saxlamaq olar

Bir görüntüyü yer koordinatları içərisindəki şəkil küncləri ilə təyin olunan bir forma çevirmək - PythonPostGIS out-db raster istifadə edərək məhdudiyyətlər varmı? Rastrın redaktəsi və proyeksiya və transformasiya ilə qənaət problemiPython GDAL: Dizini digər sənəddən proyeksiya ilə raster olaraq saxla GDAL (Python) Aggregate Python, GDAL və Scikit-ImageASCII koordinatlarını istifadə edərək GDAL ilə coğrafi koordinatları istifadə edərək görüntü işləmə dərəcəsi aşağı? Rastrın python Basemap-də Albers proyeksiya rasteri necə xəritələnir? Multibandlı rasteri gdalGDAL, python ilə yadda saxla: Sıx bir sıra içərisində GDAL verilənlər bazası obyekti necə yaradılır? numpy massivini tək band şəklində saxlamaq üçün?

Bu kodla artıq bilinən bir koordinat sistemində olan bir raster işləmə tətbiq etdim,

ancaq bu ssenarinin sonunda rasterimi saxladığımda, georeferenced olmayan bir TIFF rasteri alıram

İlkin rasterin eyni koordinat sistemini necə saxlaya bilərəm (çıxış rasterini yerli koordinatlara çevirmədən)

Python ilə yeni tanış olduğumdan və Python haqqında heç bir məlumatım olmadığından, xahiş edirəm kimsə mənə skriptimi düzəltməsini istərdim.

Opencv ilə bir raster georeference edə bilməzsiniz. GDAL və ya rasterio kimi coğrafi moduldan istifadə etməlisiniz

GDAL quraşdırmışam, amma əmrdən necə istifadə edəcəyimi bilmirəm, mənə düzəliş ssenarisini verə bilərsinizmi?

Bir görüntüyü yer koordinatlarındakı şəkil küncləri ilə müəyyən edilmiş bir forma çevirmək - məsələn Python

Bu kodla artıq bilinən bir koordinat sistemində olan bir raster işləmə tətbiq etdim,

ancaq bu ssenarinin sonunda rasterimi saxladığımda, georeferenced olmayan bir TIFF rasteri alıram

İlkin rasterin eyni koordinat sistemini necə saxlaya bilərəm (çıxış rasterini yerli koordinatlara çevirmədən)

Python ilə yeni tanış olduğumdan və Python haqqında heç bir məlumatım olmadığından, xahiş edirəm kimsə mənə skriptimi düzəltməsini istərdim.

Opencv ilə bir raster georeference edə bilməzsiniz. GDAL və ya rasterio kimi coğrafi moduldan istifadə etməlisiniz

GDAL quraşdırmışam, amma əmrdən necə istifadə edəcəyimi bilmirəm, mənə düzəliş ssenarisini verə bilərsinizmi?

Bir görüntüyü yer koordinatlarındakı şəkil küncləri ilə müəyyən edilmiş bir forma çevirmək - məsələn Python

Bu kodla artıq bilinən bir koordinat sistemində olan bir raster işləmə tətbiq etdim,

ancaq bu ssenarinin sonunda rasterimi saxladığımda, georeferenced olmayan bir TIFF rasteri alıram

İlkin rasterin eyni koordinat sistemini necə saxlaya bilərəm (çıxış rasterini yerli koordinatlara çevirmədən)

Python ilə yeni tanış olduğumdan və Python haqqında heç bir məlumatım olmadığından, xahiş edirəm kimsə mənə skriptimi düzəltməsini istərdim.

Bu kodla artıq bilinən bir koordinat sistemində olan bir raster işləmə tətbiq etdim,

ancaq bu ssenarinin sonunda rasterimi saxladığımda, georeferenced olmayan bir TIFF rasteri alıram

İlkin rasterin eyni koordinat sistemini necə saxlaya bilərəm (çıxış rasterini yerli koordinatlara çevirmədən)

Python ilə yeni tanış olduğumdan və Python haqqında heç bir məlumatım olmadığından, xahiş edirəm kimsə mənə skriptimi düzəltməsini istərdim.

Opencv ilə bir raster georeference edə bilməzsiniz. GDAL və ya rasterio kimi coğrafi moduldan istifadə etməlisiniz

GDAL quraşdırmışam, amma əmrdən necə istifadə edəcəyimi bilmirəm, mənə düzəliş ssenarisini verə bilərsinizmi?

Bir görüntüyü yer koordinatlarındakı şəkil küncləri ilə müəyyən edilmiş bir forma çevirmək - məsələn Python

Opencv ilə bir raster georeference edə bilməzsiniz. GDAL və ya rasterio kimi coğrafi moduldan istifadə etməlisiniz

GDAL quraşdırmışam, amma əmrdən necə istifadə edəcəyimi bilmirəm, mənə düzəliş ssenarisini verə bilərsinizmi?

Bir görüntüyü yer koordinatlarındakı şəkil küncləri ilə müəyyən edilmiş bir forma çevirmək - məsələn Python

Opencv ilə bir raster georeference edə bilməzsiniz. GDAL və ya rasterio kimi coğrafi moduldan istifadə etməlisiniz

Opencv ilə bir raster georeference edə bilməzsiniz. GDAL və ya rasterio kimi coğrafi moduldan istifadə etməlisiniz

GDAL quraşdırmışam, amma əmrdən necə istifadə edəcəyimi bilmirəm, mənə düzəliş ssenarisini verə bilərsinizmi?

GDAL quraşdırmışam, amma əmrdən necə istifadə edəcəyimi bilmirəm, mənə düzəliş ssenarisini verə bilərsinizmi?

Bir görüntüyü yer koordinatlarındakı şəkil küncləri ilə müəyyən edilmiş bir forma çevirmək - məsələn Python

Bir görüntüyü yer koordinatlarındakı şəkil küncləri ilə müəyyən edilmiş bir forma çevirmək - məsələn Python


矢量 数据 源 对象 ¶

Verilənlər mənbəyi ¶

DataSource, ardıcıl bir interfeys istifadə edərək müxtəlif OGR dəstəkli coğrafi məkan formatları və məlumat mənbələrindən məlumatların oxunmasını dəstəkləyən OGR məlumat mənbəyi obyekti üçün bir qablaşdırıcıdır. Hər bir məlumat mənbəyi bir və ya daha çox məlumat qatını ehtiva edən bir DataSource obyekti ilə təmsil olunur. Layer obyekti ilə təmsil olunan hər bir təbəqədə bir sıra coğrafi xüsusiyyətlər (Xüsusiyyət), bu təbəqədəki xüsusiyyətlərin növü (məsələn nöqtələr, çoxbucaqlılar və s.), Həmçinin əlavə sahələrin adları və növləri haqqında məlumatlar vardır. Bu təbəqədəki hər bir xüsusiyyətlə əlaqələndirilə bilən məlumatların (Sahə).

DataSource üçün konstruktor yalnız bir parametr tələb edir: oxumaq istədiyiniz sənədin yolu. Bununla birlikdə, OGR ayrıca bir yol əvəzinə xüsusi bir ad sətri keçərək əldə edilə bilən verilənlər bazaları da daxil olmaqla bir çox daha mürəkkəb məlumat mənbələrini dəstəkləyir. Daha çox məlumat üçün OGR Vektor Formatları sənədlərinə baxın. DataSource nümunəsinin ad xassəsi, istifadə etdiyi əsas məlumat mənbəyinin OGR adını verir.

İstəyə görə kodlaşdırma parametri mənbədəki simlərin standart olmayan kodlaşdırmasını təyin etməyə imkan verir. Bu, adətən sahə dəyərlərini oxuyarkən DjangoUnicodeDecodeError istisnalarını əldə etdikdə faydalıdır.

DataSource-u yaratdıqdan sonra, lay_count xassəsinə daxil olaraq və ya (bərabər) len () funksiyasından istifadə edərək nə qədər məlumat qatını tapa bilərsiniz. Məlumat qatlarına özləri daxil olmaq barədə məlumat üçün növbəti hissəyə baxın:

Məlumat mənbəyindəki qat sayını qaytarır.

Məlumat mənbəyinin adını qaytarır.

Qat ¶

Layer, DataSource obyektindəki bir məlumat qatı üçün bir qablaşdırıcıdır. Heç vaxt birbaşa Layer obyekti yaratmırsınız. Bunun əvəzinə onları DataSource obyektindən alırsınız, bu da Layer obyektlərinin standart Python konteyneridir. Məsələn, indeksinə görə müəyyən bir təbəqəyə daxil ola bilərsiniz (məsələn, ilk təbəqəyə daxil olmaq üçün ds [0]) və ya for for konteynerindəki bütün qatlar üzərində təkrarlaya bilərsiniz. Layer özü həndəsi xüsusiyyətlər üçün bir qab kimi çıxış edir.

Tipik olaraq, müəyyən bir təbəqədəki bütün xüsusiyyətlər eyni həndəsə tipinə malikdir. Bir təbəqənin geom_type xassəsi xüsusiyyət tipini təyin edən bir OGRGeomTypedır. DataSource-da hər təbəqə haqqında bəzi əsas məlumatları çap etmək üçün istifadə edə bilərik:

Nümunə çıxışı, yuxarıda yüklənmiş şəhərlərin məlumat mənbəyindən, açıq şəkildə üç nöqtə xüsusiyyəti ehtiva edən & quotcities & quot adlı bir təbəqəni ehtiva edir. Sadəlik üçün aşağıdakı nümunələr, həmin qatı dəyişən qatda saxladığınızı düşünür:

Bu təbəqənin adını məlumat mənbəyində qaytarır.

Qatdakı xüsusiyyətlərin sayını qaytarır. Len (qat) ilə eyni:

OGRGeomType obyekti kimi təbəqənin həndəsə növünü qaytarır:

Qatdakı sahələrin sayını, yəni təbəqədəki hər bir xüsusiyyətlə əlaqəli məlumat sahələrinin sayını qaytarır:

Bu təbəqədəki sahələrin hər birinin adlarının siyahısını qaytarır:

Bu təbəqədəki sahələrin hər birinin məlumat növlərinin siyahısını qaytarır. Bunlar aşağıda müzakirə edilən Field alt sinifləridir:

Bu təbəqədəki sahələrin hər biri üçün maksimum sahə genişliklərinin siyahısını qaytarır:

Bu təbəqədəki sahələrin hər biri üçün ədədi dəqiqliklərin siyahısını qaytarır. Bu ədədi olmayan sahələr üçün mənasızdır (və sıfıra qoyulur).

Zərf obyekti olaraq bu təbəqənin məkan dərəcəsini qaytarır:

Bu təbəqə ilə əlaqəli SpatialReference-ı qaytaran xüsusiyyət:

Layer ilə əlaqəli bir məkan istinad məlumatı yoxdursa, heç biri qaytarılmır.

Bu təbəqə üçün bir məkan filtri almaq və ya təyin etmək üçün istifadə edilə bilən xüsusiyyət. Mekansal bir filtr yalnız bir OGRGeometry nümunəsi, 4 köşeli ölçü və ya Heç biri ilə qurula bilər. Heç biri xaricində bir şeylə qurulduqda, yalnız filtr ilə kəsişən xüsusiyyətlər qat üzərində təkrarlanarkən qaytarılacaqdır:

Qatdakı hər bir xüsusiyyət üçün müəyyən bir sahənin dəyərlərinin siyahısını qaytaran bir metod:

Qatdakı hər bir xüsusiyyətin həndəsəsini ehtiva edən bir siyahını qaytaran bir metod. Könüllü arqument geosları True olaraq ayarlanırsa, həndəsələr GEOSGeometry obyektlərinə çevrilir. Əks təqdirdə, OGRGeometry obyektləri olaraq geri qaytarılır:

Bu təbəqənin verilmiş qabiliyyəti (bir simli) dəstəklədiyini göstərən bir boolean qaytarır. Düzgün qabiliyyət sətirlərinə aşağıdakılar daxildir: 'RandomRead', 'SequentialWrite', 'RandomWrite', 'FastSpatialFilter', 'FastFeatureCount', 'FastGetExtent', 'CreateField', 'Transaction', 'DeleteFeature', 'FastSetNextByIndex'.

Xüsusiyyət ¶

Xüsusiyyət bir OGR xüsusiyyətini tamamlayır. Heç vaxt birbaşa bir Xüsusiyyət obyekti yaratmırsınız. Bunun əvəzinə onları Layer obyektindən alırsınız. Hər bir xüsusiyyət həndəsə və əlavə xüsusiyyətləri olan bir sıra sahələrdən ibarətdir. Bir sahənin həndəsəsinə bir OGRGeometry obyektini qaytaran geom xüsusiyyəti ilə daxil olmaq mümkündür. Bir xüsusiyyət, sahələri üçün standart bir Python konteyner kimi davranır və onu Field obyektləri kimi qaytarır: birbaşa bir sahəyə indeks və ya adından daxil ola bilərsiniz və ya bir xüsusiyyət sahələri üzərində təkrarlaya bilərsiniz, məsələn. for for loopda.

OGRGeometry obyekti olaraq bu xüsusiyyət üçün həndəsəni qaytarır:

Bu xüsusiyyət üçün verilən sahənin dəyərini (adla göstərilən) qaytaran bir metod, yox bir sahə sarğı obyekti:

OGRGeomType obyekti olaraq bu xüsusiyyət üçün həndəsə növünü qaytarır. Bu, müəyyən bir təbəqədəki bütün xüsusiyyətlər üçün eyni olacaq və xüsusiyyətin gəldiyi Layer obyektinin Layer.geom_type xassəsinə bərabərdir.

Xüsusiyyət ilə əlaqəli məlumat sahələrinin sayını qaytarır. Bu, müəyyən bir təbəqədəki bütün xüsusiyyətlər üçün eyni olacaq və xüsusiyyətin gəldiyi Layer obyektinin Layer.num_fields xassəsinə bərabərdir.

Xüsusiyyət ilə əlaqəli məlumat sahələrinin adlarının siyahısını qaytarır. Bu, müəyyən bir təbəqədəki bütün xüsusiyyətlər üçün eyni olacaq və xüsusiyyətin gəldiyi Layer obyektinin Layer.fields xüsusiyyətinə bərabərdir.

Qat içindəki xüsusiyyət identifikatorunu qaytarır:

Xüsusiyyətin gəldiyi Layer adını qaytarır. Müəyyən bir təbəqədəki bütün xüsusiyyətlər üçün eyni olacaq:

Verilən sahə adının indeksini qaytaran bir metod. Müəyyən bir təbəqədəki bütün xüsusiyyətlər üçün eyni olacaq:

Sahə ¶

Bu sahənin adını qaytarır:

Bu sahənin OGR tipini bir tam olaraq qaytarır. FIELD_CLASSES lüğəti, bu dəyərləri Alanın alt siniflərinə uyğunlaşdırır:

Bu sahənin məlumat növünün adı olan bir sətir qaytarır:

Bu sahənin dəyərini qaytarır. Sahə sinfi özü dəyəri bir sətir kimi qaytarır, lakin hər alt sinif dəyəri ən uyğun formada qaytarır:

Bu sahənin genişliyini qaytarır:

Bu sahənin ədədi dəqiqliyini qaytarır. Bu ədədi olmayan sahələr üçün mənasızdır (və sıfıra qoyulur).

Sahənin dəyərini cüt (qayıq) şəklində qaytarır:

Sahənin dəyərini tam olaraq qaytarır:

Sahənin dəyərini sətir kimi qaytarır:

Sahənin dəyərini tarix və vaxt komponentlərinin toplusu kimi qaytarır:

Sürücü ¶

Sürücü sinfi bir OGR DataSource sürücüsünü bağlamaq üçün daxili olaraq istifadə olunur.

Hazırda qeydə alınan OGR vektor sürücülərinin sayını qaytarır.


Məlumat ipucu - obyekt adları

Kod oxunuşunu yaxşılaşdırmaq üçün, faylda nə olduğunu aydınlaşdıran fayl və obyekt adlarından istifadə edilməlidir. Bu bölümün məlumatları Harvard Meşəsindən toplanmışdır, beləliklə datatype_HARV adlandırma konvensiyasından istifadə edəcəyik.

Rastrımızın xüsusiyyətlərinə baxdıqdan sonra .values ​​ilə massivin xammal dəyərlərini araşdıra bilərik:

Bu, bizə sıra dəyərlərini tez bir şəkildə göstərə bilər, ancaq köşelerdə. Rastrımız bir DataArray tipi olaraq pythona yükləndiyindən, bunu DataArray.plot () ilə DataFrame pandalarına bənzər bir sətirdə qura bilərik.

Gözəl süjet! Diqqət yetirin ki, rioxarray bizə bu rasteri x və y oxundakı məkan koordinatları ilə qurmağımıza kömək edir (bu, əksər hallarda digər funksiyalar və ya kitabxanalarla defolt deyil).

Bu xəritə, Harvard Meşəsindəki təhsil saytımızın yüksəkliyini göstərir. Əfsanədən maksimum yüksəkliyin olduğunu görə bilərik

400, lakin bunun 400 fut və ya 400 metr olduğunu deyə bilmərik, çünki əfsanə bizə vahidləri göstərmir. Vahidlərin nə olduğunu görmək üçün obyektimizin metadatasına baxa bilərik. Bizim maraqlandığımız metadatların əksəriyyəti CRS-in bir hissəsidir və ona .rio.crs ilə daxil olmaq mümkündür. CRS konsepsiyasını əvvəlki bölümdə təqdim etdik.

İndi məlumat sənədimizdə CRS-nin xüsusiyyətlərinin necə göründüyünü və hansı mənaları ifadə etdiyini görəcəyik.

Python'da Raster Koordinat Referans Sisteminə (CRS) baxın

Python obyektimizlə əlaqəli CRS simini crs atributundan istifadə edərək görə bilərik.

EPSG kod nömrəsini int olaraq yazdırmaq üçün .to_epsg () metodundan istifadə edirik:

EPSG kodları müəyyən bir koordinat istinad sistemini qısa bir şəkildə təmsil etmək üçün əladır. Ancaq CRS haqqında məlumat görmək istəsək nə etməli? Bunun üçün koordinat istinad sistemlərini təmsil etmək və onlarla işləmək üçün kitabxana olan pyproj-dən istifadə edə bilərik.

Pyproj kitabxanasından olan CRS sinfi, bir CRS haqqında xüsusi məlumatlara və ya yuxarıda göstərilən ətraflı xülasəyə daxil olmaq üçün metod və atributları olan bir CRS obyekti yaratmağa imkan verir.

Xüsusilə faydalı bir atribut, CRS-in istifadə olunmasının nəzərdə tutulduğu coğrafi sərhədləri göstərən area_of_use.


Motivasiya¶

Bu təlimatda gündəlik gediş-gəlişimizlə əlaqəli çox praktik bir nümunədən keçirik: Yaşadığım yerdən ən yaxın ictimai nəqliyyat dayanacağı haradadır? Bu səbəbdən Helsinki Bölgəsindəki hər bir binanı (təxminən 159 000 bina) ən yaxın toplu nəqliyyat dayanacağını (

8400 dayanacaq). Bina nöqtələri OSMnx adlı bir kitabxanadan istifadə edərək OpenStreetMap-dan alındı ​​(bu kitabxana haqqında daha sonra məlumat alacağıq) və ictimai nəqliyyat dayanacaqları Helsinki Bölgəsi üçün ictimai nəqliyyat dayanacaqları, cədvəlləri və s. Haqqında məlumatları olan açıq GTFS verilənlər bazasından gətirildi.


Ipsos custodes ilə maraqlanırsınız?

Python-da proqram hazırlayırsınızsa, Python-un Coğrafi Məkan Abstraksiya kitabxanasına (GDAL) və Numpy-yə bağlanması, raster görüntüyü GeoTIFF formatında oxumaq, yazmaq və idarə etmək üçün əvəzolunmaz vasitədir.

Bu, onlarla işləmə təcrübəmi ümumiləşdirir.

GeoTIFF şəkil faylı bir və ya daha çox zolaqdan ibarət ola bilər. Hər zolaq ayrıca 2D məlumat massivi kimi nəzərdən keçirilə bilər, lakin eyni fayldakı hər zolaq eyni sıra ölçüsünə (və ya Numpy linqoda) sahib olacaqdır.

Bantdakı bütün şəkil pikselləri (massivin məlumat elementi) eyni məlumat növüdür, məs. byte, int16, və s., lakin bir lent eyni sənəddəki digərindən fərqli məlumat tipində ola bilər.

Konvensiyaya görə, bir GeoTIFF sənədində RGB raster görüntü varsa, 3 bant (RGBA olduqda 4, piksel şəffaflığı üçün alfa kanalı əlavə edilməklə) və # qırmızı üçün 1, yaşıl üçün 2 və 3 mavi üçün.

GDAL API

GeoTIFF meta məlumatlarını oxumaq üçün (coğrafi məlumat)

GeoTransform () (X, Y) massivin mənşəyini göstərən görüntünün künc koordinatları olduğu, yəni məlumat elementi olan bir tople qaytarır [0,0]. Bəs, hansı künc?

DeltaX müsbətdirsə, X Qərbdir. Əks təqdirdə, X Şərqdir. DeltaY müsbətdirsə, Y Cənubidir. Əks təqdirdə, Y Şimalidir. Başqa sözlə, həm deltaX, həm də deltaY müsbət olduqda, (X, Y) görüntünün sol alt küncündədir.

Pozitiv deltaX-a sahib olmaq da yaygındır, lakin mənfi deltaY (X, Y) şəklin sol üst küncündə olduğunu göstərir.

SRS üçün bir neçə standart qeyd var, məsələn. WKT, Proj4, və s. GetProjection () bir WKT simli qaytarır. X, Y, deltaX və deltaY üçün məna və ölçü vahidi görüntünün məkan istinad sisteminə (SRS) əsaslanır. Məsələn, SRS Stereoqrafik proyeksiyadırsa, kilometrlərlədir.

WKT notation-dan Proj4-ə çevirmək

Çox zolaqlı GeoTIFF şəkil sənədini Numpy massivləri kimi yükləmək üçün

Koordinatlar (X, Y) üçün riyazi konvensiyadan fərqli olaraq, Numpy sıra indeksləşdirməsi [y-ofset] [x-ofset] istifadə edir.

2 ölçülü Numpy massivini 1 zolaqlı GeoTIFF faylı olaraq saxlamaq

Pete-dən düzəliş daxildir

Daha böyük bir görüntüdən (massiv) dilimləmək

Koordinatları bir SRS-dən digərinə dəyişdirmək

Pyproj istifadə edin
Məsələn, qütb stereoqrafiya proyeksiyasında 2 uzunluq və enlik siyahısını X, Y koordinatlarına çevirmək üçün:


Versiya 1.4.0¶

Profil məsafələri indi tərəfindən proqnozlaşdırılan (Kartezyen) koordinatlarda qaytarılır profil bir proyeksiya verildiyi təqdirdə şəbəkəçilərin metodu. Metodda proqnoz vermədən əvvəl koordinatlara proyeksiya tətbiq etmək imkanı var, beləliklə coğrafi koordinatları Kartezyen katiblərinə ötürə bilərik. Bu hallarda profil boyunca olan məsafə, proqnozlaşdırılmamış koordinatlarla profile_coordinates funksiyası ilə hesablanır (coğrafi vəziyyətdə dərəcə olardı). Profil nöqtəsinin hesablanması, koordinatların Kartezyen olduğu fərz edilərək aparılır, girişlər uzunluq və enlem olduğu təqdirdə səhvdir. Bunu düzəltmək üçün, indi giriş nöqtələrini profile_coordinates-ə ötürmədən əvvəl proqnozlaşdırırıq. Bu o deməkdir ki, məsafələr Kartezyandır və profil nöqtələrinin yaranması da Kartezyandır (funksiyanın qəbul etdiyi kimi). Yaradılan koordinatlar geri proqnozlaşdırılır ki, istifadəçi uzunluq və enlem alsın, lakin məsafələr Kartezyen metrlərlə proqnozlaşdırılsın. (# 231)


Dünya matrisini dünya kosmik koordinatı üçün obyekt-məkan vektoruna vurun:

`Object.matrix_world 4x4 çevrilmə matrisidir. Tərcümə, fırlanma və miqyasdan ibarətdir. 4x4 matris də güzgü və kəsmə üçün istifadə edilə bilər (cavabımda göstərilməyib).

Tərcümə matrisin 4-cü sütununun ilk 3 cərgəsində (d, h, l) saxlanılır:

Fırlanma və miqyas bir növ birləşdirilmişdir. Fırlanma a, b, c, e, f, g, i, j və k-də saxlanılır. Tərəzi a, f və k-də saxlanılır. Fırlanmanın a, f və k-dəki dəyərləri alınır və hər iki məlumatı saxlamaq üçün miqyas faktoru ilə vurulur.

Yalnız fırlanma əldə etmək üçün 3x3 matrisini normallaşdırmalısınız:

Yalnız tərəzi əldə etmək üçün köməkçi metoddan istifadə edə bilərsiniz:

Və ya əl ilə matrisi normallaşdırın və normallaşdırılmamışların hər birini normallaşdırılmış komponentlərə bölün (a, f, k):

Bütün təpələrin dünya koordinatlarına ehtiyacınız varsa, transform () metodundan istifadə etmək daha səmərəlidir:

Transformasiya matrisini mesha tətbiq edəcək, buna görə dünya matrisini bütün vertex koordinatları ilə artırın. Yuxarıda göstərilənləri yerinə yetirsəniz, görünüş sahəsindəki bir mesh obyektinin istiqamətinin dəyişməsi ilə maraqlana bilərsiniz. Matrix_world'u sıfırlamaqla düzəldilə bilər (əks halda çevrilmə iki dəfə ediləcək):


Sorğu koordinat sistemi

Revit modelinizin yerləşdiyi yer səthindəki müəyyən yeri müəyyən etmək üçün sorğu koordinat sistemindən istifadə edin. Bu koordinat sistemi bir layihə kontekstindən kənarda müəyyən edilir.

Bir çox sorğu koordinat sistemi standartlaşdırılmışdır. Bəzi sistemlər enlik və boylam digərlərindən XYZ koordinatlarını istifadə edir. Tədqiqat koordinat sistemləri proyekt koordinat sistemlərindən əhəmiyyətli dərəcədə daha böyük miqyaslara sahibdir və yer koordinatları sistemləri üçün əhəmiyyətsiz olan yerin və ərazinin əyriliyi kimi məsələlərlə məşğul olur.

Revit-də sorğu nöqtəsi modelin yaxınlığında gerçək bir yer müəyyənləşdirir. Məsələn, sorğu nöqtəsini layihə sahəsinin bir küncündə və ya 2 əmlak xəttinin kəsişməsində yerləşdirə və real dünya koordinatlarını təyin edə bilərsiniz. (Görmək yuxarıdakı şəkildə.)

Sorğu koordinat sistemi, digər proqram tətbiqetmələrində və ya digər kontekstlərdə istifadə edilən aşağıdakı terminlərlə eyni məna daşıyır:

  • qlobal koordinatlar
  • CİS koordinatları
  • şəbəkə koordinatları
  • sörveyer koordinatları
  • proyeksiya koordinatları
  • dövlət təyyarəsi
  • paylaşılan koordinatlar

1 Cavab 1

Verilərinizdə səhv bir şey yoxdur, əsas səhviniz istifadə olunan süjet funksiyasına diqqət yetirməyinizdir. Bu keçid sizə məlumatlarınızı necə qurmağı izah edir. https://matplotlib.org/tutorials/introductory/pyplot.html

Ancaq son sətri belə bir şeyə dəyişdirərdim:

Ümumiyyətlə tam olaraq nə istədiyinizi və ya məlumatların formatını anlamaq biraz çətindir, buna görə ümid edirəm ki, bu işləyir. Dərsliyi izləyin, həqiqətən davam etdirməli olduğunuz şeyi başa düşməyinizə kömək edəcəkdir.


Videoya baxın: Səhv səcdəsi haqqında qısa olaraq. - Nicat Həşimov. (Sentyabr 2021).