Achizitia Datelor Spatiale Utilizând Dispozitive Mobile
LUCRARE DE DISERTAȚIE
Conducător științific:
Lect. univ. dr. Adrian Ursu
Masterand:
Silviu Șutea-Drăgan
Iași, iunie 2016
Achiziția datelor spațiale utilizând dispozitive mobile
Conducător științific:
Lect. univ. dr. Adrian Ursu
Masterand:
Silviu Șutea-Drăgan
Iași, iunie 2016
Lista figurilor și tabelelor
Rezumat
Cuvinte-cheie
Abstract
Keywords
Introducere și obiective
Sistemele Informaționale Geografice (SIG, en. GIS – geographic information systems) au devenit în ultimul timp din ce în ce mai prezente în viața noastră de zi cu zi și datorită dezvoltării puterii de calcul a dispozitivelor mobile. Pe acest segment, cele mai populare aplicații aparțin celor de la Google, însă unul dintre cele mai populare programe de analiză spațială este ArcGIS, care a fost dezvoltat gigantului american ESRI (Environmental Systems Research Institute), inițial doar ca aplicație desktop.
Ca răspuns la evoluția tehnologică, ESRI a intrat tot mai mult pe segmentul on-line și mobile, introducând componente de legătura cu web-ul în aplicația sa, ori dezvoltând interfețe de programare a aplicațiilor pentru web și mobile.
În prezent, pe lângă WebAppBuilder, o platformă cu ajutorul căreia un utilizator fără cunoștințe de programare, poate să construiască aplicații de analiză geo-spațială, pe pagina ESRI dedicată programatorilor se găsesc kituri de dezvoltare de aplicații pentru câteva dintre cele mai populare platforme în acest moment, precum Android, Java, .NET, iOS, OS X, Xamarin sau Qt.
De asemenea, cu aproximativ un an în urmă, cei de la ESRI au lansat și o aplicație pentru Android, iOS și Windows utilizată pentru colectarea datelor din teren, cu ajutorul unui dispozitiv mobil. Datele astfel colectate, sunt salvate pe un server pus la dispoziție de ESRI, de unde pot fi exportate în diverse formate, pentru a fi analizate fie în aplicația desktop, fie în alte programe de analiză a datelor geospațiale sau chiar în aplicația on-line a celor de la ESRI.
Se observă astfel, interesul crescut al companiei americane de a oferi servicii tot mai complete și mai diverse utilizatorilor de date spațiale, acest lucru constituind premisa pentru încercarea din această lucrare de a construi un mijloc de analiză care să utilizeze numai interfețele și serviciile puse la dispoziție de ESRI.
Având în vedere multitudinea de posibilități de dezvoltare a unei aplicații care să prelucreze date geo-spațiale, am ales ca în această lucrare să realizez un exemplu de analiză completă asupra unui subiect de interes, acest lucru cuprinzând inclusiv crearea propriei aplicații de colectare a datelor cu ajutorului unui dispozitiv mobil care rulează Android, precum și crearea mai apoi a unui instrument care să automatizeze procesul de prelucrare a datelor colectate.
Cadru metodologic
În cadrul unei platforme GIS putem distinge patru mari categorii de activități sau subsisteme după cum urmează:
Achiziționarea, integrarea și verificarea datelor
Informațiile spațiale, înainte de integrarea lor într-un proiect GIS, trebuie transformate într-o formă utilizabilă de program. De obicei, formele de bază ale datelor spațiale sunt reprezentate de hărți, desene, tabele, fotografii aeriene, imagini satelitare etc. Odată introduse în sistem, urmează etapa de acordare a atributelor. Cea mai comună metodă de introducere a datelor într-un sistem GIS este digitizarea. Hărțile, planurile, schițele etc. pot fi, de asemenea, scanate, georeferențiate și importate sub formă de raster. Informațiile obținute din aplicațiile de teren în care sunt utilizate stația totală, GPS-ul sau chiar telefonul mobil pot fi introduse în GIS sub formă de vector. Aceste două tipuri de date la care am făcut referire (raster și vector), reprezintă formatele de bază pentru alcătuirea unui proiect GIS.
Fig. 1: Tipuri de vertecși: punct, polilinie, poligon
(preluată de pe http://www.tankonyvtar.hu/en/tartalom/tamop425/0032_terinformatika/ch01s02.html)
Întocmirea și gestionarea bazei de date spațiale
Baza de date spațială este considerată una dintre principalele subramuri ale sistemului care face diferența dintre GIS și alte programe de cartografiere sau grafică. Într-un proiect de tip GIS, volumul de informație este structurat în straturi (layers) și stocat în DBMS-uri (Database Management System) sub formă de tabele și hărți tematice. O bază de date spațială trebuie să cuprindă funcții pentru actualizare, editare și manipulare ale datelor de tip atribut și ale celor de tip grafic.
Fig. 2: Straturi componente ale unui SIG
(preluată de pe http://www.tankonyvtar.hu/en/tartalom/tamop425/0032_terinformatika/ch01s02.html)
Modelarea și analiza datelor
În această etapă se oferă posibilitatea utilizatorului de a efectua analize, interogări, transformări și modelări ale datelor. Cu ajutorul acestui subsistem utilizatorul poate accesa funcțiile necesare analizelor pentru cercetarea sa, având posibilitatea, permanent, să fie conectat la baza de date, efectuând interogări în baza informației existente. Pe scurt, manipularea informației în GIS oferă posibilitatea creării de noi hărți tematice pe baza celor deja stocate, rezultând straturi primare și secundare.
Vizualizarea și diseminarea rezultatelor
Rezultatele finale pot fi vizualizate și exportate sub formă de hărți, tabele, grafice, animații video etc. La principalele categorii prezentate anterior, se poate adauga interfața programului de care beneficiază utilizatorul, considerată la fel de importantă deoarece facilitează crearea și trimiterea comenzilor către sistem, precum și receptarea și vizualizarea rezultatelor.
Fig. 3: Ciclul informațiilor geospațiale
(preluată de pe http://www.tankonyvtar.hu/en/tartalom/tamop425/0032_terinformatika/ch01s02.html)
Transpunerea și reproducerea digitală, sub formă de hărți, a realității înconjurătoare cu ajutorul GIS-ului se fac pe baza atributelor entităților geografice existente (dimensiuni, culoare, formă) și a unui sistem de coordonate ce definește spațial poziția acestora. Grafic, entitățile pot fi reprezentate sub formă de punct (poziția unui artefact), linie (râu, drum) și poligon (suprafața unui sit arheologic) la care se adaugă etichetele ce conțin explicații în legătura cu definirea respectivelor reprezentări. În aplicațiile dedicate cercetării științifice care folosesc componente GIS, există două tipuri de simbolizări ale datelor, fiecare cu avantaje și dezavantaje, ce diferă fundamental prin modelul spațial pe care îl implementează: vector și raster.
Sistemul de reprezentare raster stochează informația sub forma unei matrice rectangulare alcătuită din celule sau pixeli, fiecare conținând date referitoare la o poziție geografică anume. Astfel, o suprafață afișată sub formă de raster va fi definită în funcție de numărul de coloane și rânduri dintr-un grid, precum și de mărimea fiecărui pixel. Valorile deținute de celulele rasterului pot fi dintre cele mai diverse. În cazul unui model numeric al terenului, spre exemplu, acestea trebuie să afișeze informațiile legate de poziția și altitudinea în zona respectivă, pe când în situația unei hărți a pantelor valorile vor fi exprimate în grade.
Într-o structură de tip vector însă, entitățile geografice înconjurătoare sunt reprezentate prin puncte, linii și poligoane, elemente grafice denumite și primitive. Fiecare dintre acestea este definită, la rândul său, folosind una sau mai multe perechi de coordonate x, y, intitulate vertexuri. Într-un sistem vector, pentru a putea manipula și gestiona cât mai bine elementele grafice ce alcătuiesc un strat tematic (layer) în proiectul de GIS, trebuie stabilite anumite relații topologice pentru acestea.
Fig. 4: Modelul vector vs. modelul raster
(preluată de pe http://www.catalonia.org/cartografia/Clase_03/Raster_Vector.html)
Majoritatea dintre programele GIS oferă posibilitatea lucrului cu ambele tipuri de date și pune la dispoziție funcții de transformare din raster în vector și invers. Această capacitate se dovedește a fi una esențială pentru utilizator, deoarece are posibilitatea alegerii sistemului potrivit necesităților sale.
II.1. ArcGIS și ArcPy
ArcGIS este un sistem informatic geografic pentru lucrul cu hărți și informații geografice. Acesta este utilizat pentru: crearea și utilizarea hărților; compilarea datelor geografice; analiza informațiilor spațiale; schimbul de informații și descoperirea de informații geografice, folosind hărți și informații geografice într-o gamă largă de aplicații și gestionarea informațiilor geografice într-o bază de date.
Sistemul oferă o infrastructură pentru realizarea de hărți și informații geografice disponibile în cadrul unei organizații, într-o comunitate, și în mod deschis pe Web.
ArcGIS include următoarele componente software pentru desktop:
ArcReader, ceea ce permite vizualizarea și interogarea hărților create cu celelalte produse ArcGIS;
-ArcGIS Desktop, care este licențiat sub trei niveluri de funcționalitate:
– ArcGIS Desktop Basic (cunoscut anterior ca ArcView), care permite vizualizarea datelor spațiale, crearea de hărți stratificate și efectuarea analizelor spațiale de bază;
– ArcGIS Desktop Standard (cunoscut anterior ca ArcEditor), care, în plus față de funcționalitatea ArcView, include instrumente mai avansate pentru manipularea fișierelor de tip shapefile și geodatabase;
– ArcGIS Desktop avansat (cunoscut anterior ca ArcInfo), care include capabilități de manipulare a datelor, editare și analiză.
ArcGIS Online este un sistem GIS online, bazat pe colaborare, care permite utilizarea, crearea și partajarea de hărți, scene, aplicații, straturi tematice, analize și date. Se oferă astfel acces la hărți gata de utilizare, aplicații și serviciul cloud ESRI securizat, în care se pot adăuga elemente și publica straturi tematice web. Deoarece ArcGIS Online face parte integrantă din sistemul ArcGIS, poate fi utilizat pentru a extinde capabilitățile ArcGIS for Desktop, ArcGIS for Server, ArcGIS Web APIs și ArcGIS Runtime SDK.
ArcPy este un modul Python, care oferă o modalitate utilă și productivă pentru a efectua analiza datelor geografice, conversie de date și gestionare a lor, precum și posibilitatea automatizării procesului de creare a hărților cu Python.
Prin acest pachet, dezvoltatorii GIS beneficiază de toate avantajele folosirii unui limbaj de programare. Marele câștig obșinut prin utilizarea ArcPy este că Python este un limbaj de programare de uz general. Este interpretat și dinamic, potrivit pentru realizarea de script-uri fiind în același timp suficient de puternic pentru a scrie aplicații mari. Instrumentele ArcGIS scrise în ArcPy sunt dezvoltate ca module suplimentare fiind posibilă utilizarea lor în scopuri diferite .
II.2. Web-GIS-ul
Web-GIS-ul este un tip de sistem informatic distribuit, care cuprinde cel puțin un server și un client, în cazul în care serverul este un server GIS, iar clientul este un browser web, aplicatie desktop sau aplicație mobilă. În forma sa cea mai simplă, GIS-ul web poate fi definit ca orice GIS care utilizeaza tehnologia web pentru a comunica între un server și un client.
Elementele esențiale pentru Web-GIS sunt:
Serverul are o adresă URL, astfel încât clienții îl pot găsi pe web.
Clientul se bazează pe specificațiile HTTP pentru a trimite cereri către server.
Serverul efectuează operațiunile GIS solicitate și trimite răspunsurile la client prin HTTP.
Formatul răspunsului trimis la client poate fi în mai multe formate, cum ar fi HTML, imagini binare, XML (Extensible Markup Language), sau JSON (JavaScript Object Notation).
Fig. 5: Modelul arhitectural al Web-GIS-ului
(preluată de pe http://www.esri.com/esri-news/arcnews/winter1314articles/arcgis-for-desktop-now-includes-arcgis-online-subscription)
În această lucrare s-au folosit componente ale Web-GIS-ului prin utilizarea serverului pe care se stochează informațiile colectate cu ajutorul aplicației pentru Android, care funcționează astfel ca un client.
Crearea unei aplicații Android pentru colectarea datelor spațiale
Deoarece s-a dorit familiarizarea cu kit-ul de dezvoltare a aplicatiilor Android a celor de la ESRI, am ales să creez o aplicație care să realizeze doar ceea ce am nevoie pentru realizarea prezentului proiect, folosind și exemple din documentația pusă la dispoziție pe https://developers.arcgis.com. Totuși, au fost adăugate câteva elemente care aduc un plus de funcționalitate.
Pentru a folosi librăria dezvoltată pentru Android, estte necesară includerea în proiect a acesteia,
repositories {
jcenter()
// Add the following ArcGIS repository
maven {
url 'https://esri.bintray.com/arcgis'
}
}
iar în fișierul build.gradle este necesară includerea a ArcGIS Runtime SDK for Android
dependencies {
compile 'com.esri.arcgis.android:arcgis-android:10.2.8'
}
Aplicația permite vizualizarea a 3 tipuri de hărți de bază (basemap), așa cum se poate vedea în figura de mai jos.
Acestea se pot schimba din meniul principal al aplicației, fiind obiecte de tip MapOptions:
final MapOptions mTopoBasemap = new MapOptions(MapOptions.MapType.TOPO);
final MapOptions mStreetsBasemap = new MapOptions(MapOptions.MapType.STREETS);
final MapOptions mNatGeoBasemap = new MapOptions(MapOptions.MapType.NATIONAL_GEOGRAPHIC);
Fig. 6: Meniul aplicației
View-ul este un obiect din clasa MapView, declarat inițial null și inițializat la crearea activității.
MapView mMapView = null;
public void onCreate(Bundle savedInstanceState) {
…
// Retrieve the map and initial extent from XML layout
mMapView = (MapView) findViewById(R.id.map);
…
}
Cu opțiunea de Geocoding, se poate căuta în aplicație orice locație existentă în baza de date ESRI. Apoi se pot realiza măsurători pentru distanță sau arie, care pot fi exprimate în diferite unități de masură.
Fig. 7: Geocodaj și măsurători
Pentru realizarea măsurătorilor, mai întâi se setează unitățile apoi se apelează funcția de măsurare. Aceasta este executată pe server.
SimpleMarkerSymbol markerSymbol = new SimpleMarkerSymbol(Color.BLUE, 10, SimpleMarkerSymbol.STYLE.DIAMOND);
SimpleLineSymbol lineSymbol = new SimpleLineSymbol(Color.YELLOW, 3);
fillSymbol = new SimpleFillSymbol(Color.argb(100, 0, 225, 255));
fillSymbol.setOutline(new SimpleLineSymbol(Color.TRANSPARENT, 0));
// create the tool, required.
MeasuringTool measuringTool = new MeasuringTool(mMapView);
// customize the tool, optional.
measuringTool.setLinearUnits(linearUnits);
measuringTool.setMarkerSymbol(markerSymbol);
measuringTool.setLineSymbol(lineSymbol);
measuringTool.setFillSymbol(fillSymbol);
// fire up the tool, required.
startActionMode(measuringTool);
Pentru găsirea locațiilor, se trimite numele de căutat serverului, unde se execută căutarea, iar la client se face afișarea.
protected void onPostExecute(List<LocatorGeocodeResult> result) {
…
// Use first result in the list
LocatorGeocodeResult geocodeResult = result.get(0);
// get return geometry from geocode result
Point resultPoint = geocodeResult.getLocation();
// create marker symbol to represent location
SimpleMarkerSymbol resultSymbol = new SimpleMarkerSymbol(
Color.RED, 16, SimpleMarkerSymbol.STYLE.CROSS);
// create graphic object for resulting location
Graphic resultLocGraphic = new Graphic(resultPoint,
resultSymbol);
// add graphic to location layer
mLocationLayer.addGraphic(resultLocGraphic);
// create text symbol for return address
String address = geocodeResult.getAddress();
TextSymbol resultAddress = new TextSymbol(20, address,
Color.BLACK);
// create offset for text
resultAddress.setOffsetX(-4 * address.length());
resultAddress.setOffsetY(10);
// create a graphic object for address text
Graphic resultText = new Graphic(resultPoint, resultAddress);
// add address text graphic to location graphics layer
mLocationLayer.addGraphic(resultText);
// Zoom map to geocode result location
mMapView.zoomToResolution(geocodeResult.getLocation(), 7);
}
}
Cea mai importantă facilitate a acestei aplicații este partea de editare, care oferă și opțiunea de localizare a utilizatorului cu ajutorul GPS-ului, pentru a introduce noi date spațiale pe serverul pregătit să le înregistreze.
Fig. 8: Geo-localizare și culegere de informații spațiale
Pentru partea de localizare este responsabil un obiect din clasa LocationDisplayManager care afișează locația curentă a dispozitivului în MapView.
LocationDisplayManager mLDM;
// When map is ready, set up the LocationDisplayManager.
final OnStatusChangedListener statusChangedListenerForLoc = new OnStatusChangedListener() {
private static final long serialVersionUID = 1L;
@Override
public void onStatusChanged(Object source, STATUS status) {
if (source == mMapView && status == STATUS.INITIALIZED) {
mMapSr = mMapView.getSpatialReference();
if (mLDM == null) {
setupLocationListener();
}
}
}
};
private void setupLocationListener() {
if ((mMapView != null) && (mMapView.isLoaded())) {
mLDM = mMapView.getLocationDisplayManager();
mLDM.setLocationListener(new LocationListener() {
boolean locationChanged = false;
// Zooms to the current location when first GPS fix arrives.
@Override
public void onLocationChanged(Location loc) {
if (!locationChanged) {
locationChanged = true;
zoomToLocation(loc);
// turn on the Location pan mode to show the location symbol.
mLDM.setAutoPanMode(LocationDisplayManager.AutoPanMode.LOCATION);
}
}
});
mLDM.start();
}
}
Utilizatorul poate colecta date, de tipul celor care au fost inițial înregistrate pe server. În aplicație, datele apar sub forma unei liste preluată din layerul înregistrat în codul aplicației.
// Create feature layers
ArcGISFeatureLayer fl1 = new ArcGISFeatureLayer(
"http://services6.arcgis.com/kzx2WjUtBxh95dvC/arcgis/rest/services/FeatureAndroid/FeatureServer/0",
ArcGISFeatureLayer.MODE.ONDEMAND);
fl1.setOnStatusChangedListener(statusChangedListener);
// Find MapView and add feature layers
mMapView = (MapView) findViewById(R.id.map);
mMapView.addLayer(fl1);
Fig. 9: Meniul de confirmare a datelor editate
Utilizatorul pune un punct preliminar pe hartă, iar apoi trebuie să confirme pentru ca acesta să fie înregistrat pe server. Datele apar în timp real și pot fi vizualizate.
Fig. 10: Vizualizarea pe server
Spre deosebire de aplicațiile de profil deja existente, aceasta are avantajul că poate fi optimizată special pentru scopul în carese dorește a fi utilizata. De asemenea, un avantaj îl reprezintă și faptul că poate fi văzută ca o alternativă la serviciile web oferite de Google.
Concluzii
Bibliografie
Pagini Web
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Achizitia Datelor Spatiale Utilizând Dispozitive Mobile (ID: 108649)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
