Бештар

Чӣ тавр координатаҳоро аз растер дар QGIS истихроҷ кардан мумкин аст

Чӣ тавр координатаҳоро аз растер дар QGIS истихроҷ кардан мумкин аст


Ман пойгоҳи додаҳои ҳамоҳангшудаи глобалии хокро дар формати растрӣ (tif) дорам. Ман мехоҳам координатаҳоро (марказҳои ячейкаҳо дар lon/lat) ва арзиши майдонро ҷудо кунам, то онҳоро бо маълумоти хоке, ки дар файли mdb мавҷуданд, пайванд кунам.

Оё ягон роҳи истихроҷи координатҳо аз файли растерӣ вуҷуд дорад?


Бале, истихроҷи файлеро имконпазир аст, аммо коркарди он хеле душвор аст, зеро ба шумо хотираи зиёд лозим аст. Беҳтар аст, ки ин координатаҳоро дар ду растер "сӯзонед" (як барои ҳар як арзишҳои координатҳо; x ва y).

Бо вуҷуди ин, ман кӯшиш кардам, ки "файли файл" (дар асл як "мавзӯи рӯйдодҳо" аз файли матнӣ) -ро бо равиши дигар таҳия кунам. Аввалан, ман як минтақаи ихтиёриро (дар Бразилия) бо рақами аниқи ҳуҷайраи шумо (2105x1388 ячейка) интихоб кардам ва бо ду плагини худ кумак кардам (зеро инро дар тасвири оянда мушоҳида кардан мумкин аст).

Бо рамзи навбатӣ дар консолҳои Python -и QGIS, ман файли матнӣ гирифтам, ки дар QGIS бор карда шавад.

layer = iface.activeLayer () дараҷа = layer.extent () xmin = дараҷа.xMinimum () ymax = дараҷа.yMaximum () сатрҳо = layer.height () сутунҳо = layer.width () xsize = layer.rasterUnitsPerPixelX () ysize = layer.rasterUnitsPerPixelY () k = 1 xinit = xmin + xsize/2 yinit = ymax - ysize/2 pfile = open ('points.txt', 'w') pfile.write ('id xy  n') чоп кунед " Коркарди… "барои i дар диапазон (сатрҳо): барои j дар диапазон (сутунҳо): x = xinit + j*xsize y = yinit pfile.write (str (k) +" " + str (x) +" " + str (y) + " n") k + = 1 xinit = xmin + xsize/2 yinit -= ysize pfile.close ()

Дар тасвири навбатӣ, шумо метавонед як қабати нуқтаро (марказҳои чашмакҳо дар lon/lat), ки ҳамчун файли матнии ҷудошуда сохта шудааст, мушоҳида кунед, аммо коркарди он хеле душвор аст. Ин мумкин аст, аммо нороҳат.

Эзоҳ таҳрир:

Рамзи навбатӣ ба файли матнӣ қиматҳои растериро илова мекунад:

аз osgeo воридоти gdal воридоти os tab = iface.activeLayer () провайдер = layer.dataProvider () my_path = provider.dataSourceUri () дода = gdal.Open (my_path) банд = дода.GetRasterBand (1) data = band.ReadAsArray (0) (0) rasterUnitsPerPixelX () ysize = layer.rasterUnitsPerPixelY () k = 1 xinit = xmin + xsize/2 yinit = ymax - ysize/2 pfile = кушода ('points.txt', 'w') pfile.write ('id xy  n ') чоп кунед "Коркарди ..." барои i дар диапазон (сатрҳо): барои j дар диапазон (сутунҳо): x = xinit + j*xsize y = yinit pfile.write (str (k) + "" + str (x) + "" + str (y) + "" + str (маълумот [i] [j]) + " n") k + = 1 xinit = xmin + xsize/2 yinit -= ysize pfile.close () додаҳо = Ҳеҷ чоп "Иҷро шуд!"