„Spatial4J” változatai közötti eltérés

Innen: GIS Wiki
(GeoJSON műveletek)
46. sor: 46. sor:
 
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)
 
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)
  
 +
==Alakzatok írása/olvasása szöveges formátumokból==
  
== GeoJSON műveletek ==
+
A Spatial4j segítségével nagyon egyszerűen lehet szöveges formátumokból beolvasni, illetve a különböző alakzatokat ilyen formátumokba kiírni.
A Spatial4j segítségével nagyon egyszerűen lehet GeoJSON formátumból beolvasni, illetve a különböző alakzatokat ilyen formátumba kiírni.
+
Az olvasáshoz egy <code>ShapeReader</code> interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a <code>GeoJSONReader</code>, <code>WKTReader</code> és <code>PolyshapeReader</code>, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a <code>ShapeWriter</code> interface példányaira van szükség.
Az olvasáshoz egy ShapeReader típusú objektumra lesz szükségünk:
 
  
== WKT műveletek ==
+
=== GeoJSON ===
 +
<code>GeoJSONReader</code> objektumot (és általában a <code>ShapeReader</code> objektumokat) kétféleképpen érjük el a ''SpatialContextből''
 +
 
 +
<syntaxhighlight lang="java">
 +
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);
 +
 
 +
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();
 +
</syntaxhighlight>
 +
A ShapeReader
 +
 
 +
 
 +
=== WKT ===

A lap 2017. május 13., 20:46-kori változata

A Spatial4j egy általános térinformatikai, open source Java könyvtár (ASL license). A könyvtár 3 területen ad segítséget: közönséges alakzatok euklideszi és geodéziai modellekhez, távolság és egyéb számítások, alakzatok írása/olvasása GeoJSON és WKT(Well Known Text) formátumokból .

Történet

Eredetileg Lucene Spatial Playgroundként (LSP) volt ismert a projekt, később ebből vált ki a Spatial4j, ami már teljes független a Lucene-től. Az LSP többi része a Lucene ill. Solr projektekbe olvadtak bele, vagy átkerültek a Spatial Solr Sandboxba. 2016 februárjától a Spatial4j a LocationTech-hez került (Eclipse).

Függőségek

A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és JTS alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a JTS API is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). GeoJSON feldolgozásához pedig a Noggit JSON elemző könyvtárra is szükség lesz.

Alapok

A könyvtár által nyújtott lehetőségeket SpatialContext osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre SpatialContext példányokat. Ez egyik, hogy globális, singleton példányt használunk:

 SpatialContext globalContext = SpatialContext.GEO;

A másik esetben pedig a SpatialContextFactory segítségével hozunk létre egy új context példányt:

 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();

A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy .property fájlból is felolvashatjuk), melyekkel inicializálódik a SpatialContext példányunk. Ezt a SpatialContextFactory osztály statikus metódusával tehetjük meg:

SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);


Ha poligonokat is akarunk használni, akkor az első két módon lehetőség van a JTS-re épülő megfelelőket használni:

JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();


Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a SpatialContextFactory esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a SpatialContext példányokon keresztül érhetőek el.

Alakzatok

A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:

A poligonok a JTS Geometry osztályának csomagolásával vannak megvalósítva. Jelenleg nincs lehetőség a pólusokon levő poligonokkal dolgozni, de tervezik ennek megvalósítását a jövőben. Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:

  • bounding box kiszámítása
  • terület kiszámítása (néhány alakzatnál ez inkább csak becslés)
  • tartalmaz-e egy adott pontot
  • milyen kapcsolatban áll egy téglalappal: tartalmazza az adott téglalapot (CONTAINS), benne van-e az adott alakzatban (WITHIN), nincs közös pont(DISJOINT). Az érintésre nincs számítás a Spatial4j-ben

Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)

Alakzatok írása/olvasása szöveges formátumokból

A Spatial4j segítségével nagyon egyszerűen lehet szöveges formátumokból beolvasni, illetve a különböző alakzatokat ilyen formátumokba kiírni. Az olvasáshoz egy ShapeReader interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a GeoJSONReader, WKTReader és PolyshapeReader, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a ShapeWriter interface példányaira van szükség.

GeoJSON

GeoJSONReader objektumot (és általában a ShapeReader objektumokat) kétféleképpen érjük el a SpatialContextből

ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);

ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();

A ShapeReader


WKT