Vairāk

Vektors -> Ģeometrijas rīki -> Izvilkšanas mezglu ekvivalents PyQGIS API


Mans jautājums ir diezgan tiešs.

Vai kāds zinātu QQIS rīka Izvilkšanas mezgli PyQGIS ekvivalentu? Šķiet, ka to neatrodu API dokumentācijā. Ja jūs to darāt, lūdzu, kopīgojiet arī dokumentāciju.


Jūs varat ņemtextractPoints ()funkcija no Carson Farmer spraudņa fTools:

# Izveidot QgsPoints sarakstu no ievades ģeometrijas (var būt punkts, līnija vai daudzstūris) def extractPoints (ģeom): multi_geom = QgsGeometry () temp_geom = [] ja geom.type () == 0: # tas ir punkts, ja ģeom. isMultipart (): temp_geom = geom.asMultiPoint () else: temp_geom.append (geom.asPoint ()) elif geom.type () == 1: # tā ir līnija, ja geom.isMultipart (): multi_geom = geom.asMultiPolyline ( ) #multi_geog ir daudzrindu i i multi_geom: #i ir līnija temp_geom.extend (i) else: temp_geom = geom.asPolyline () elif geom.type () == 2: #tas ir daudzstūris, ja geom.isMultipart ( ): multi_geom = geom.asMultiPolygon () #multi_geom ir daudzpoligons priekš i in multi_geom: #i ir daudzstūris j iekš i: #j ir līnija temp_geom.extend (j) else: multi_geom = geom.asPolygon () # multi_geom ir daudzstūris i programmai multi_geom: #i ir līnija temp_geom.extend (i) # FIXME - ja nav neviena no zināmajiem ģeomiem (punkts, līnija, daudzstūris), parādiet brīdinājuma ziņojumu return temp_geom

Tad vienkārši norādiet savu ģeometriju kā argumentu:

punkti = extractPoints (feature.geometry ())

punktusaturēs Python punktu sarakstu (koordinātu pārus). Jūs varētu piekļūt, piemēram,Ypirmā punkta koordinātas ir šādas:

drukas punkti [0] [1]

Esmu to pārbaudījis QGIS 2.6.1, izmantojot QGIS Python konsoli.

Kopumā vektoru ģeoprocesoru rīkiem jums ir pieejams Python avota kods. Manā datorā fTools atrodas plkst/usr/share/qgis/python/plugins/fTools/


Ja jums patīk Python, jums ir nepieciešams tikai klasiskais Python, sarakstu izpratne un PyQGIS izpratne: Ģeometrijas apstrāde:

  • Punkts PyQGIS ir veidots arQgsPoint (x, y);
  • Līnijas virkne arQgsGeometry.fromPolyline ([QgsPoint (x1, y1), QgsPoint (x2, y2)]))
  • Daudzstūris arQgsGeometry.fromPolygon ([[[QgsPoint (x1, y1), QgsPoint (x2, y2), QgsPoint (x3, y3), QgsPoint (x1, y1)]])

Tātad daudzstūra LinearRing/robeža ir[[QgsPoint (x1, y1), QgsPoint (x2, y2), QgsPoint (x3, y3), QgsPoint (x1, y1)]] [0] = [QgsPoint (x1, y1), QgsPoint (x2, y2), QgsPoint (x3, y3), QgsPoint (x1, y1)].

Piemērs ar daudzstūra slāni:

layer = qgis.utils.iface.activeLayer () # pārbauda pirmo elementu elem = layer.getFeatures (). next () geom = elem.geometry () # vai elem = layer.getFeatures (). next (). geometry ( ) first_poly = geom.asPolygonon () print first_poly [[(6.97738,53.361), (7.18994,52.8886), (6.70577,52.5698), (7.16632,52.2509), (6.59948,51.8258), (6.04445,51.8258), (5.879) , 50.763), (5.70199,50.8575), (5.89093,51.2708), (5.31229,51.2472), (5.08791,51.4125), (4.69821,51.4833), (4.22584,51.3416), (3.49368,51.3534), (4.02509,52.062) ), (4.82811,52.9241), (5.18239,52.4399), (5.61932,52.5934), (5.59571,52.8532), (5.40676,52.9004), (5.43038,53.2547), (6.39873,53.4555), (6.74119,53.4791), (6.97738,53.361)]]

Tagad, ja vēlaties šī daudzstūra lineāro gredzenu:

ring = first_poly [0]) print ring # = punktu koordinātu saraksts [(6.97738,53.361), (7.18994,52.8886), (6.70577,52.5698), (7.16632,52.2509), (6.59948,51.8258), ( 6.04445,51.8258), (5.87913,50.763), (5.70199,50.8575), (5.89093,51.2708), (5.31229,51.2472), (5.08791,51.4125), (4.69821,51.4833), (4.22584,51.3416), (3.499) 51.3534), (4.02509,52.062), (4.82811,52.9241), (5.18239,52.4399), (5.61932,52.5934), (5.59571,52.8532), (5.40676,52.9004), (5.43038,53.2547), (6.39873,53.4555) , (6.74119,53.4791), (6.97738,53.361)]

Un mezgli/punkti:

pt gredzenā: izdrukāt QgsPoint (pt) (6.97738,53.361) (7.18994,52.8886) (6.70577,52.5698)…

vai

gredzens = QgsGeometry.fromPolyline (first_poly [0]) gredzena punktam. asPolyline (): drukas punkts

Tātad mezglu sarakstu sniedz:

mezgli = [punkts gredzenā.asPolyline ()] = [punkts ģeometrijas punktam [0] .asPolygon () [0]]

Un jūs varat iegūt visus daudzstūra slāņa mezglus ar:

elementam layer.getFeatures (): elementam elem.geometry (). asPolygon () [0]: drukas punkts

Jūs varat mēģināt saprast divkāršu sarakstu, bet PyQGIS viņiem ļoti nepatīk…

mezgli = [punkts punktam elem.geometry (). asPolygon () [0] elementiem layer.getFeatures ()] drukas mezgli [(6.97738,53.361), (6.97738,53.361), (6.97738,53.361), ( 7.18994,52.8886), (7.18994,52.8886), (7.18994,52.8886), (6.70577,52.5698), (6.70577,52.5698), (6.70577,52.5698), (7.16632,52.2509), (7.16632,52.2509), (7.16632, 52.2509), (6.59948,51.8258), (6.59948,51.8258), (6.59948,51.8258), (6.04445,51.8258), (6.04445,51.8258), (6.04445,51.8258), (5.87913,50.763), (5.87913,50) , (5.87913,50.763), (5.70199,50.8575), (5.70199,50.8575), (5.70199,50.8575), (5.89093,51.2708), (5.89093,51.2708), (5.89093,51.2708), (5.31229,51.24) 5.31229,51.2472), (5.31229,51.2472), (5.08791,51.4125), (5.08791,51.4125), (5.08791,51.4125), (4.69821,51.4833), (4.69821,51.4833), (4.69821,51.4833), (4.22584), 51.3416), (4.22584,51.3416), (4.22584,51.3416), (3.49368,51.3534), (3.49368,51.3534), (3.49368,51.3534), (4.02509,52.062), (4.02509,52.062), (4.02509,52.062) , (4.82811,52.9241), (4.82811,52.9241), (4.82811,52 .9241), (5.18239,52.4399), (5.18239,52.4399), (5.18239,52.4399), (5.61932,52.5934), (5.61932,52.5934), (5.61932,52.5934), (5.59571,52.8532), (5.59571,52.8532) ), (5.59571,52.8532), (5.40676,52.9004), (5.40676,52.9004), (5.40676,52.9004), (5.43038,53.2547), (5.43038,53.2547), (5.43038,53.2547), (6.39873,53.4555), (6.39873,53.4555), (6.39873,53.4555), (6.74119,53.4791), (6.74119,53.4791), (6.74119,53.4791), (6.97738,53.361), (6.97738,53.361), (6.97738,53.361)]

un LineStrings slāņa mezgli:

elementam layer.getFeatures (): elementam elem.geometry (). asPolyline (): drukas punkts

vai ar tiem pašiem ierobežojumiem:

mezgli = [punkts punktam elem.geometry (). asPolyline () elementam layer.getFeatures ()]

Tas pats attiecas uz MultiGeometries, pievienojiet cilpu/


Vektors -> Ģeometrijas rīki -> Izvilkšanas mezglu ekvivalents PyQGIS API -Ģeogrāfiskās informācijas sistēmas

Izmantot Pikseļu tīrības indekss (PPI), lai multispektrālajos un hiperspektralajos attēlos atrastu spektrāli visattīrākos (galējākos) pikseļus. Tie parasti atbilst gala dalībnieku sajaukšanai. PPI tiek aprēķināts, atkārtoti projicējot n-D izkliedes diagrammas uz nejaušas vienības vektoru. ENVI reģistrē galējos pikseļus katrā projekcijā (tos pikseļus, kas nokrīt uz vienības vektora galiem) un atzīmē kopējo reižu skaitu, kad katrs pikselis ir atzīmēts kā galējs. Tiek izveidots pikseļu tīrības attēls, kurā katra pikseļa vērtība atbilst reižu skaitam, kad pikselis tika ierakstīts kā galējs.

Funkcija PPI var izveidot jaunu izvades joslu vai turpināt tās atkārtojumus un pievienot rezultātus esošai izvades joslai. PPI parasti tiek darbināts ar MNF pārveidošanas rezultātu, izņemot trokšņu joslas. PPI rezultātus parasti izmanto kā ievadi n-D vizualizatorā.

Jūs varat uzrakstīt skriptu, lai izveidotu PPI attēlu, izmantojot ENVIPixelPurityIndexTask.

Piezīme: Skatiet Spectral Hourglass Wizard, lai iegūtu norādījumus par ENVI smilšu pulksteņa apstrādes plūsmu, ieskaitot PPI, lai atrastu un kartētu attēla spektrālos gala dalībniekus no hiperspektrāliem vai multispektrāliem datiem.

Skatiet šādas sadaļas:


Skatīties video: QGIS Python PyQGIS-오류, 경고 및 성공 메시지 표시 (Oktobris 2021).