„Spatial4J” változatai közötti eltérés
(→Alapok) |
|||
9. sor: | 9. sor: | ||
== Alapok == | == 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: | 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: | ||
+ | |||
+ | <syntaxhighlight lang="java"> | ||
+ | SpatialContext globalContext = SpatialContext.GEO; | ||
+ | </syntaxhighlight> | ||
A másik esetben pedig a SpatialContextFactory segítségével hozunk létre egy új context példányt: | A másik esetben pedig a SpatialContextFactory segítségével hozunk létre egy új context példányt: | ||
+ | <syntaxhighlight lang="java"> | ||
+ | SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext(); | ||
+ | </syntaxhighlight> | ||
− | A harmadik: | + | 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: |
+ | <syntaxhighlight lang="java"> | ||
+ | SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader); | ||
+ | </syntaxhighlight> | ||
Ha poligonokat is akarunk használni, akkor mindkét esetben lehetőség van a JTS-ben levő megfelelőjét használni: | Ha poligonokat is akarunk használni, akkor mindkét esetben lehetőség van a JTS-ben levő megfelelőjét használni: | ||
+ | <syntaxhighlight lang="java"> | ||
+ | JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO; | ||
+ | JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext(); | ||
+ | </syntaxhighlight> | ||
A lap 2017. április 24., 18:32-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 .
Tartalomjegyzék
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:
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);
Ha poligonokat is akarunk használni, akkor mindkét esetben lehetőség van a JTS-ben levő megfelelőjét 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. Ezek me
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.)