geologyidea.com
Viac

Efektívnejšie priestorové pripojenie v Pythone bez QGIS, ArcGIS, PostGIS atď

Efektívnejšie priestorové pripojenie v Pythone bez QGIS, ArcGIS, PostGIS atď


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Pokúšam sa vytvoriť priestorové spojenie podobne ako v tomto prípade: Existuje možnosť pythonu „spojiť atribúty podľa umiestnenia“ ?. Tento prístup sa však zdá byť skutočne neefektívny / pomalý. Aj spustenie tohto testu so skromnými 250 bodmi trvá takmer 2 minúty a úplne zlyhá na súboroch tvaru s> 1 000 bodmi. Existuje lepší prístup? Chcel by som to urobiť úplne v Pythone bez použitia ArcGIS, QGIS atď.

Tiež by ma zaujímalo, či je možné SÚČIASTKY (t. J. Populácia) všetkých bodov, ktoré spadajú do mnohouholníka, spojiť a toto množstvo s mnohouholníkovým tvarovým súborom.

Tu je kód, ktorý sa pokúšam previesť. Na riadku 9 sa zobrazuje chyba:

poly ['vlastnosti'] ['skóre'] += bod ['vlastnosti'] ['skóre']

ktorý hovorí:

TypeError: nepodporované typy operandov pre +=: 'NoneType' a 'float'.

Ak nahradím „+=“ textom „=“, bude to fungovať dobre, ale polia sa tým nesčítajú. Tiež som sa pokúsil vytvoriť tieto čísla ako celé čísla, ale tiež to zlyhalo.

s fiona.open (poly_shp, 'r') ako n: s fiona.open (point_shp, 'r') ako s: outSchema = {'geometry': 'Polygon', 'properties': {'region': 'str ',' score ':' float '}} s fiona.open (out_shp,' w ',' ESRI Shapefile ', outSchema, crs) ako výstup: pre bod v s: pre poly v n: if tvar (bod [' geometria ']). vnútri (tvar (poly [' geometria '])): poly [' vlastnosti '] [' skóre ']) += bod [' vlastnosti '] [' skóre ']) output.write ({' properties ': {' region ': poly [' properties '] [' NAME '],' score ': poly [' properties '] [' score ']},' geometry ': poly [' geometry ']})

Fiona vracia slovníky Pythonu a nemôžete ich používaťpoly ['vlastnosti'] ['skóre']) += bod ['vlastnosti'] ['skóre'])so slovníkom.

Príklad súčtu atribútov pomocou odkazov uvedených Mikeom T:

# prečítajte súbory tvarov importujte fionu z shapely.geometry importujte polygóny tvaru = [pol pre pol v fiona.open ('poly.shp')] body = [pt pre pt in fiona.open ('point.shp')] # atribúty polygónov pre poly v polygónoch: vytlačte poly ['vlastnosti'] OrderedDict ([(u'score ', 0)]) OrderedDict ([(u'score', 0)]) OrderedDict ([(u'score ', 0)]) # atribútov bodov pre pt v bodoch: print i ['properties'] OrderedDict ([(u'score ', 1)])… # (rovnaké pre 8 bodov)

Teraz môžeme použiť dve metódy, s priestorovým indexom alebo bez neho:

1: bez

# iterovať body pre i, pt v enumeráte (body): bod = tvar (pt ['geometria']) # opakovať polygóny pre j, poly v enumerácii (polygóny): ak point.within (tvar (poly ['geometria '])): # súčet hodnôt atribútov mnohouholníky [j] [' vlastnosti '] [' skóre '] = mnohouholníky [j] [' vlastnosti '] [' skóre '] + body [i] [' vlastnosti '] [ 'skóre']

2: s indexom R-stromu (môžete použiť pyrtree alebo rtree)

# Vytvorte index stromu R a uložte do neho funkcie (ohraničovací rámček) z indexu importu rtree idx = index.Index () pre pos, poly v enumerate (polygóny): idx.insert (pos, shape (poly ['geometry) ']). hranice) # opakujte body pre i, pt v enumerácii (body): bod = tvar (pt [' geometria ']) # iterujte priestorovým indexom pre j v idx.intersection (point.coords [0]) : if point.within (shape (polygons [j] ['geometry'])): polygons [j] ['properties'] ['score'] = polygons [j] ['properties'] ['score'] + body [i] ['vlastnosti'] ['skóre']

Výsledok dvoch riešení:

pre poly v polygónoch: vytlačte poly ['vlastnosti'] OrderedDict ([(u'score ', 2)]) # 2 body v polygóne OrderedDict ([(u'score', 1)]) # 1 bod v polygóne OrderedDict ([(u'score ', 1)]) # 1 bod v mnohouholníku

V čom je rozdiel ?

  • Bez indexu musíte prechádzať všetkými geometriami (mnohouholníky a body).
  • S ohraničujúcim priestorovým indexom (Spatial Index RTree) iterujete iba prostredníctvom geometrií, ktoré majú šancu sa pretnúť s vašou aktuálnou geometriou („filter“, ktorý môže ušetriť značné množstvo výpočtov a času ...)
  • ale priestorový index nie je kúzelná palička. Keď je potrebné získať veľmi veľkú časť množiny údajov, priestorový index nemôže poskytnúť žiadnu výhodu v súvislosti s rýchlosťou.

Po:

schéma = fiona.open ('poly.shp'). schéma s fiona.open ('output.shp', 'w', 'ESRI Shapefile', schéma) ako výstup: pre poly v polygónoch: output.write (poly)

Ak chcete ísť ďalej, pozrite sa na Použitie priestorového indexovania Rtree s OGR, Shapely, Fiona


Navyše - geopandy teraz voliteľne obsahujúrtreeako závislosť nájdete v repo githubu

Takže namiesto toho, aby ste dodržiavali celý (veľmi pekný) kód vyššie, môžete jednoducho urobiť niečo ako:

import geopandas z geopandas.tools import sjoin point = geopandas.GeoDataFrame.from_file ('point.shp') # or geojson etc poly = geopandas.GeoDataFrame.from_file ('poly.shp') pointInPolys = sjoin (point, poly, how = "vľavo") pointSumByPoly = pointInPolys.groupby ('PolyGroupByField') ['polia', 'v', 'zoskupené', 'výstup']. agg (['súčet'])

Ak chcete získať túto jednoduchú funkciu, najskôr si nainštalujte knižnicu C libspatialindex

EDIT: opravený import balíkov


Na vykonanie oveľa rýchlejších spojení použite Rtree ako index, potom pomocou Shapely urobte priestorové predikáty, aby ste zistili, či sa bod skutočne nachádza v mnohouholníku. Ak sa to urobí správne, môže to byť rýchlejšie ako väčšina ostatných GIS.

Príklady nájdete tu alebo tu.

Druhá časť vašej otázky týkajúcej sa „SUMY“, použite adiktovaťobjekt akumulovať populácie pomocou kľúča s mnohouholníkom. Aj keď sa tento typ vecí robí s PostGIS oveľa krajšie.


Táto webová stránka ukazuje, ako použiť vyhľadávanie v mnohouholníku Bounding Box pred drahším v rámci priestorového dotazu Shapely.

http://rexdouglass.com/fast-spatial-joins-in-python-with-a-spatial-index/


Tréningový deň

Poldenné a celodenné školenia sa uskutočnia 13. augusta za príplatok 35 dolárov za poldenné a 65 dolárov za celodenné sedenia. Školenia sa konajú podľa poradia príchodu.

Celodenné školenia Piatok 13. augusta, 8:30 - 17:00

Celodenné školenia sú ponúkané za príplatok 65 dolárov za sedenie.

Asset Management 101: Principles & amp Practice for GIS Professional

Inštruktor: Anthony Dowell a Christopher Pawlowski, AECOM

Správa aktív sa stáva stále dôležitejším cieľom agentúr a organizácií, pretože sa snažia optimalizovať svoje rozpočty, udržiavať svoje existujúce aktíva a investovať do nových vylepšení a projektov. Táto relácia poskytne účastníkom úvod do kľúčových zásad správy aktív, terminológie a osvedčených postupov so zameraním na úlohu, ktorú údaje, systémy a odborníci GIS zohrávajú v životnom cykle a rámci správy aktív. Na praktické cvičenia bude použitý softvér Esri ArcGIS Desktop a Innovyze InfoAsset Planner so zameraním na správu majetku pre vodohospodárske/odpadové vody.

Potreby softvéru

  • ArcGIS Desktop (ArcMap & amp ArcCatalog) verzia 10.6.1 alebo novšia
  • Innovyze InfoAsset Planner (Inštalačné súbory a dočasné licencie zosilňovača poskytuje AECOM)

Úvod do Microsoft Power BI - Prieskum dát a vizualizácia

Inštruktor: Anastassiya Suprunova

Za posledný rok ste vďaka pandémii videli mnoho rôznych prístrojových panelov. Žijeme vo svete neustáleho toku údajov a tak málo času na transformáciu údajov na cenné informácie. Pripojte sa k tomuto workshopu a naučte sa vytvárať informatívne a príťažlivé informačné panely pomocou bezplatného softvéru Microsoft Power BI. Microsoft Power BI nie je jedinou možnosťou na trhu, ktorá vám môže pomôcť vizualizovať a analyzovať vaše údaje. Napriek tomu má značné výhody, ktoré počas tohto workshopu preskúmame.

Na tomto workshope sa naučíte prostredníctvom praktických cvičení: Rozdiel v aplikácii Power BI Desktop a službe Power BI v tom, aby ste si mohli vybrať nástroj, ktorý je pre vás ten pravý, ako prepojiť svoje údaje, ako transformovať údaje tak, aby zodpovedali vašim potrebám, ako tieto údaje môžete zmysluplne vizualizovať pomocou vizuálov, ako sú stĺpce, čiary, koláčové grafy, mapy, merače, karty atď., Ako namapovať údaje pomocou rôznych možností dostupných v službe Power BI, ako rozpovedať príbeh pomocou údajov vytvorením informatívne a interaktívne tabule pokročilé funkcie, ako sú záložky a popisy, ako publikovať a zdieľať svoju prácu s ostatnými, a mnoho ďalších tipov a trikov Power BI.

Potreby softvéru

  • Microsoft BI Power Desktop
  • Vyžaduje sa organizačná alebo študentská e -mailová adresa. Adresy Gmail, yahoo a ďalšie nie sú povolené. Obráťte sa na nás s otázkami.

Modelovanie na povodí pomocou nástrojov Open Source PostGIS a QGIS

Inštruktor: John Buckley, McCormick Taylor

Tento workshop účastníkom predstaví niekoľko open-source nástrojov GIS so zameraním na PostGIS a QGIS. Je určený pre používateľov so základnými znalosťami GIS, ktorí by mohli mať záujem dozvedieť sa viac o alternatívach open source k ArcMap. Vítaní sú tiež užívatelia, ktorí sa zaujímajú o modelovanie povrchových vôd alebo analýzu veľkých množín údajov pomocou SQL. Načítame rastrové a vektorové údaje do databázy s podporou PostGIS a vizualizujeme ju v QGIS. Pomocou voľne dostupných údajov o nadmorskej výške vymedzíme povodia, potoky, akumuláciu toku a vrstvy smeru toku pre miestne povodie pomocou GRASS a QGIS. Nakoniec vypočítame dolné prietokové cesty a protiprúdové odvodňovacie oblasti iba pomocou jazyka SQL a výstupy vizualizujeme v QGIS. Dúfam, že sa počas celého workshopu podelím o množstvo tipov a trikov, ktoré som sa naučil počas rokov používania týchto skvelých open source balíkov. Pokiaľ to čas dovolí, pozrieme sa na to, ako tieto rovnaké nástroje a techniky možno použiť na mapovanie povodní, modelovanie klímy a analýzu všetkých typov veľkých priestorových súborov údajov.


Prečo sme posadnutí „polohou“ ako dimenziou?

Po prvé, neexistuje žiadna „mobilita“ bez dynamického umiestnenia. Inými slovami, poloha je základným aspektom vždy, keď dochádza k pohybu majetku (osôb, vozidiel, nákladu, balíka) na zemi. Koniec koncov, v mestách a obciach, kde sa veci menia na každom štvorcovom kilometri mesta, je dôležité pridať „kontext“ týchto oblastí.

Pre ekonomiku na požiadanie, v ktorej žijeme, je analýza údajov o polohe vo všetkých vašich dimenziách (používatelia, obchody, partneri) kritická v reálnom čase. Dôvodom je, že musíte zosúladiť svoju ponuku s dopytom, robiť ceny podľa polohy, propagačné akcie alebo rýchlejšie a presnejšie dodávky vo veľkom!

Za druhé, umiestnenie sa stáva kľúčovým pre analýzu vždy, keď existuje otázka „kde“ v obchodnom probléme. Napríklad kde mám otvoriť svoj nový obchod? Kde mám spustiť kampane a produkty? Kde pošlem svojho doručovateľa na adresu?

A nakoniec, najúspešnejšie skúsenosti spotrebiteľov založené na polohe sú založené na sekvenčných aktivitách na veľmi granulárnej úrovni: Kde ste? Kam potrebuješ ísť? Čo chcete robiť, keď sa tam dostanete? Toto je dôležité, keď potrebujete získať zákazníkov zacielením reklám a ich udržaním a zapojením do štúdia ich správania.

Poloha je vzrušujúca! Ak hráte správne, môže viesť k významnému zlepšeniu výnosov (príklad: Uber & amp Airbnb). Vďaka vysokému použitiu a povahe v reálnom čase je skutočne hodnotný a lepkavý.

Po celú dobu však bol komponent umiestnenia, ktorý bol pri obchodných rozhodnutiach obzvlášť zanedbávaný. Dôvodom je, že konvenčné analytické nástroje sú fantastické pre pokladnicu štatistických údajov, ktoré majú firmy, ale niekde ich nedosahujú. lokalizačné rozhodovanie.

Mohlo by vás zaujímať: „Ale prečo?“

Predtým, než sa na to ponoríme, pochopme, ako sa geopriestorové údaje líšia od štatistických údajov.


Streamujte obrazovku Androidu do počítača pomocou TeamViewer

Dlho som hľadal jednoduchý spôsob, ako streamovať obrazovku tabletu Android na počítač (Windows), aby som predviedol ukážky fungovania aplikácií v systéme Android (napríklad ukážky v aplikácii Collector a ďalších aplikáciách ArcGIS). Môžete samozrejme použiť prenosnú kameru alebo webovú kameru, ale čo keď chcete niečo skutočne rýchlo ukázať bez nastavenia kamier?

V prípade, že budete niekedy musieť predvádzať ukážky s mobilnými aplikáciami - prečítajte si nižšie, ako to urobiť.

Existuje mnoho spôsobov, ako to urobiť (servery vnc, platené aplikácie, udeliť prístup k zariadeniu root), ale najefektívnejším spôsobom, ktorý som zatiaľ našiel, je používanie programu TeamViewer. K dispozícii je tiež bezplatná verzia tohto softvéru.

  1. Stiahnite si TeamViewer do počítača so systémom Windows. Nie je potrebné ho inštalovať, je možné iba spustiť súbor .exe raz.
  2. Nainštalujte si TeamViewer QuickSupport do tabletu.
  3. Keď spustíte TeamViewer na tablete, zobrazí sa otázka, či chcete nainštalovať doplnok na diaľkové ovládanie zariadenia. Tablet automaticky vyhľadá doplnok pre vašu výrobu (Lenovo, Sony, Samsung, HTC, HP atď.) A nainštaluje si ho.
  4. Potom sa stačí pripojiť z počítača so systémom Windows k tabletu Android (oba by mali byť samozrejme pripojené k internetu).

Pri slabom internetovom pripojení môže dôjsť k určitému oneskoreniu, ale vo všeobecnosti tomu ľudia rozumejú a zameriavajú sa skôr na funkčnosť, a nie na výkon zdieľania obrazovky. Majte na pamäti, že môžete ovládať aj diaľkové ovládanie, takže riešenie problémov priamo na tablete zákazníka je možnosťou, ak pracujete v technickej podpore.

Takže môžete nielen vidieť svoju obrazovku, ale v skutočnosti vykonávať kliknutia na simuláciu dotykov na tablete. Úžasná funkcia, ktorú budem teraz často používať pri predvádzaní našim zákazníkom.