<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Laczk%C3%B3+D%C3%B3ra</id>
	<title>GIS Wiki - Szerkesztő közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Laczk%C3%B3+D%C3%B3ra"/>
	<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Laczk%C3%B3_D%C3%B3ra"/>
	<updated>2026-05-09T17:59:04Z</updated>
	<subtitle>Szerkesztő közreműködései</subtitle>
	<generator>MediaWiki 1.31.7</generator>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=554</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=554"/>
		<updated>2017-05-16T11:44:54Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; egy általános térinformatikai, open source Java könyvtár ([http://www.apache.org/licenses/LICENSE-2.0.html 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A konstruktorok használata nincs megtiltva, azonban mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JtsSpatialContext ctx= JtsSpatialContext.GEO;&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terület és távolság számítás====&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Geohash==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GeohashUtils&amp;lt;/code&amp;gt; osztály segítségével lehetőségünk van koordináták geohashbe kódolására, valamint geohashből is dekódolhatunk koordinátákat.&lt;br /&gt;
&lt;br /&gt;
A geohash lényege, hogy a Földön található koordinátákat egy rövidebb alakba kódolja. Célja, hogy egy olyan karakter sort kapunk, amivel egyértelműen és kényelmesebben hivatkozhatunk a koordinátákra. Bővebben lásd: [https://en.wikipedia.org/wiki/Geohash Geohash Wikipedia]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
GeohashUtils.encodeLatLon(47.64369627,18.96712353); //u2mrp972wh8q&lt;br /&gt;
GeohashUtils.decode(&amp;quot;u2mrp972wh8q&amp;quot;); //Pt(x=18.9671235345304,y=47.64369626529515)&lt;br /&gt;
GeohasUtils.decodeBoundary(&amp;quot;u2mrp972wh8q&amp;quot;); //Rect(minX=18.967123366892338,maxX=18.967123702168465,minY=47.643696181476116,maxY=47.64369634911418)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=553</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=553"/>
		<updated>2017-05-16T11:19:06Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alapok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A konstruktorok használata nincs megtiltva, azonban mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JtsSpatialContext ctx= JtsSpatialContext.GEO;&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terület és távolság számítás====&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Geohash==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GeohashUtils&amp;lt;/code&amp;gt; osztály segítségével lehetőségünk van koordináták geohashbe kódolására, valamint geohashből is dekódolhatunk koordinátákat.&lt;br /&gt;
&lt;br /&gt;
A geohash lényege, hogy a Földön található koordinátákat egy rövidebb alakba kódolja. Célja, hogy egy olyan karakter sort kapunk, amivel egyértelműen és kényelmesebben hivatkozhatunk a koordinátákra. Bővebben lásd: [https://en.wikipedia.org/wiki/Geohash Geohash Wikipedia]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
GeohashUtils.encodeLatLon(47.64369627,18.96712353); //u2mrp972wh8q&lt;br /&gt;
GeohashUtils.decode(&amp;quot;u2mrp972wh8q&amp;quot;); //Pt(x=18.9671235345304,y=47.64369626529515)&lt;br /&gt;
GeohasUtils.decodeBoundary(&amp;quot;u2mrp972wh8q&amp;quot;); //Rect(minX=18.967123366892338,maxX=18.967123702168465,minY=47.643696181476116,maxY=47.64369634911418)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=542</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=542"/>
		<updated>2017-05-15T19:54:46Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alakzatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JtsSpatialContext ctx= JtsSpatialContext.GEO;&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terület és távolság számítás====&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Geohash==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GeohashUtils&amp;lt;/code&amp;gt; osztály segítségével lehetőségünk van koordináták geohashbe kódolására, valamint geohashből is dekódolhatunk koordinátákat.&lt;br /&gt;
&lt;br /&gt;
A geohash lényege, hogy a Földön található koordinátákat egy rövidebb alakba kódolja. Célja, hogy egy olyan karakter sort kapunk, amivel egyértelműen és kényelmesebben hivatkozhatunk a koordinátákra. Bővebben lásd: [https://en.wikipedia.org/wiki/Geohash Geohash Wikipedia]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
GeohashUtils.encodeLatLon(47.64369627,18.96712353); //u2mrp972wh8q&lt;br /&gt;
GeohashUtils.decode(&amp;quot;u2mrp972wh8q&amp;quot;); //Pt(x=18.9671235345304,y=47.64369626529515)&lt;br /&gt;
GeohasUtils.decodeBoundary(&amp;quot;u2mrp972wh8q&amp;quot;); //Rect(minX=18.967123366892338,maxX=18.967123702168465,minY=47.643696181476116,maxY=47.64369634911418)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=541</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=541"/>
		<updated>2017-05-15T19:51:26Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Geohash */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JtsSpatialContext ctx= JtsSpatialContext.GEO;&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Geohash==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GeohashUtils&amp;lt;/code&amp;gt; osztály segítségével lehetőségünk van koordináták geohashbe kódolására, valamint geohashből is dekódolhatunk koordinátákat.&lt;br /&gt;
&lt;br /&gt;
A geohash lényege, hogy a Földön található koordinátákat egy rövidebb alakba kódolja. Célja, hogy egy olyan karakter sort kapunk, amivel egyértelműen és kényelmesebben hivatkozhatunk a koordinátákra. Bővebben lásd: [https://en.wikipedia.org/wiki/Geohash Geohash Wikipedia]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
GeohashUtils.encodeLatLon(47.64369627,18.96712353); //u2mrp972wh8q&lt;br /&gt;
GeohashUtils.decode(&amp;quot;u2mrp972wh8q&amp;quot;); //Pt(x=18.9671235345304,y=47.64369626529515)&lt;br /&gt;
GeohasUtils.decodeBoundary(&amp;quot;u2mrp972wh8q&amp;quot;); //Rect(minX=18.967123366892338,maxX=18.967123702168465,minY=47.643696181476116,maxY=47.64369634911418)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=539</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=539"/>
		<updated>2017-05-15T19:44:45Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JtsSpatialContext ctx= JtsSpatialContext.GEO;&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Geohash==&lt;br /&gt;
&amp;lt;code&amp;gt;GeohashUtils&amp;lt;/code&amp;gt; osztály segítségével lehetőségünk van koordináták geohashbe kódolására, valamint geohashből is dekódolhatunk koordinátákat.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
GeohashUtils.encodeLatLon(47.64369627,18.96712353); //u2mrp972wh8q&lt;br /&gt;
GeohashUtils.decodeLatLon(&amp;quot;u2mrp972wh8q&amp;quot;); //Pt(x=18.9671235345304,y=47.64369626529515)&lt;br /&gt;
&amp;lt;/syntaxhiglight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=538</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=538"/>
		<updated>2017-05-15T19:38:02Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alakzatok írása/olvasása szöveges formátumokból */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JtsSpatialContext ctx= JtsSpatialContext.GEO;&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=527</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=527"/>
		<updated>2017-05-14T19:52:46Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alakzatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JtsSpatialContext ctx= JtsSpatialContext.GEO;&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy ShapeWriter objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=526</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=526"/>
		<updated>2017-05-14T18:21:43Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 [http://geojson.org/ &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039;] és [https://en.wikipedia.org/wiki/Well-known_text &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;](Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy ShapeWriter objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GeoJSONben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=525</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=525"/>
		<updated>2017-05-14T18:17:41Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy ShapeWriter objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A beolvasás pedig így működik:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GEOJsonben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=524</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=524"/>
		<updated>2017-05-14T18:13:28Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy ShapeWriter objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy WKT formátumú fájl beolvasására ====&lt;br /&gt;
A fájl tartalma például legyen a következő:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wkt&amp;quot;&amp;gt;&lt;br /&gt;
POINT (19.797752 47.171645)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
try(FileReader reader = new FileReader(path)){&lt;br /&gt;
&lt;br /&gt;
  SpatialContext ctx = SpatialContext.GEO;&lt;br /&gt;
  ShapeReader shapeReader = ctx.getFormats().getWktReader();&lt;br /&gt;
  Shape shape = shapeReader.read(reader);&lt;br /&gt;
  /*&lt;br /&gt;
   Ha kiíratjuk, látszik, hogy a beolvasott alakzatunk egy pont:&lt;br /&gt;
   System.out.println(shape);&lt;br /&gt;
   Pt(x=19.797752,y=47.171645)&lt;br /&gt;
  */&lt;br /&gt;
}catch (Exception ex){&lt;br /&gt;
  //handle&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Példa egy alakzat kiírására GEOJsonben====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=523</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=523"/>
		<updated>2017-05-14T17:58:05Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* GeoJSON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShpaeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Illetve ha írni szeretnénk, akkor hasonlóan jutunk egy ShapeWriter objektumhoz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeWriter shapeWriter1= ctx.getFormats().getWriter(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeWriter shapeWriter2 = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Példa egy pont kiírására:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SpatialContext ctx = SpatiaContext.GEO;&lt;br /&gt;
ShapeWriter shapeWriter = ctx.getFormats().getGeoJsonWriter();&lt;br /&gt;
&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(18.967123,47.643696);&lt;br /&gt;
&lt;br /&gt;
try(FileWriter writer = new FileWriter(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
  shapeWriter.write(writer, shape);&lt;br /&gt;
&lt;br /&gt;
} catch (IOException e) {&lt;br /&gt;
  // handle exception        &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után a fájlunk tartalma a következő kell legyen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;type&amp;quot;:&amp;quot;Point&amp;quot;,&amp;quot;coordinates&amp;quot;:[18.967123,47.643696]}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WKT ===&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=522</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=522"/>
		<updated>2017-05-14T17:24:12Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alakzatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 15); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShpaeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
=== GeoJSON ===&lt;br /&gt;
&amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt; objektumot (és általában a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat) kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WKT ===&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=521</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=521"/>
		<updated>2017-05-13T21:27:27Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alakzatok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatokat a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 0); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
Rectangle r = ctx.getShapeFactory().rectangle(point1, point2); //vagy .rectangle(0,0,10,10)&lt;br /&gt;
&lt;br /&gt;
Shape lineString = ctx.getShapeFactory().lineString()&lt;br /&gt;
                .pointXY(0,1)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape shapeCollection = ctx.getShapeFactory().multiShape(Shape.class)&lt;br /&gt;
                .add(p)&lt;br /&gt;
                .add(circle)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
Shape polygon = globalContext.getShapeFactory().polygon()&lt;br /&gt;
                .pointXY(0,0)&lt;br /&gt;
                .pointXY(2,3)&lt;br /&gt;
                .pointXY(10,5)&lt;br /&gt;
                .build();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShpaeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
=== GeoJSON ===&lt;br /&gt;
&amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt; objektumot (és általában a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat) kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WKT ===&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=520</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=520"/>
		<updated>2017-05-13T21:18:30Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
A Spatial4J-ben használható alakzatok: Point, Code, Rectangle, LineString, Polygon, ShapeCollection. Alakzatok a &amp;lt;code&amp;gt;ShapeFactory&amp;lt;/code&amp;gt; segítségével tudunk létrehozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Point point = ctx.getShapeFactory().pointXY(10,10);&lt;br /&gt;
&lt;br /&gt;
Circle circle = ctx.getShapeFactory().circle(point, 0); // vagy .circle(10,10,0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
Az olvasást a &amp;lt;code&amp;gt;ShpaeReader&amp;lt;/code&amp;gt; által adott &amp;#039;&amp;#039;read&amp;#039;&amp;#039; művelettel tudjuk megtenni, aminek vagy egy &amp;lt;code&amp;gt;Obejct&amp;lt;/code&amp;gt; vagy egy &amp;lt;code&amp;gt;Reader&amp;lt;/code&amp;gt; (java.io.Reader) típusú paramétert vár.&lt;br /&gt;
&lt;br /&gt;
=== GeoJSON ===&lt;br /&gt;
&amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt; objektumot (és általában a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat) kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WKT ===&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=519</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=519"/>
		<updated>2017-05-13T18:48:01Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
A beolvasott adatokból a megfelelő &amp;lt;code&amp;gt;Shape&amp;lt;/code&amp;gt; objektumok állnak elő. Íráskor pedig a különböző alakzatainkat tudjuk adott formátumban kiírni.&lt;br /&gt;
&lt;br /&gt;
=== GeoJSON ===&lt;br /&gt;
&amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt; objektumot (és általában a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat) kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A ShapeReader &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WKT ===&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=518</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=518"/>
		<updated>2017-05-13T18:46:13Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
==Alakzatok írása/olvasása szöveges formátumokból==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; interface-t megvalósító osztály egy példányára lesz szükségünk. Ilyen osztályok, a &amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WKTReader&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;PolyshapeReader&amp;lt;/code&amp;gt;, amik rendre GeoJSON, WKT és Polyshape formátumok olvasására alkalmasa. Az írás hasonlóan működik, ekkor a &amp;lt;code&amp;gt;ShapeWriter&amp;lt;/code&amp;gt; interface példányaira van szükség.&lt;br /&gt;
&lt;br /&gt;
=== GeoJSON ===&lt;br /&gt;
&amp;lt;code&amp;gt;GeoJSONReader&amp;lt;/code&amp;gt; objektumot (és általában a &amp;lt;code&amp;gt;ShapeReader&amp;lt;/code&amp;gt; objektumokat) kétféleképpen érjük el a &amp;#039;&amp;#039;SpatialContextből&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ShapeReader shapeReader1 = ctx.getFormats().getReader(ShapeIO.GeoJSON);&lt;br /&gt;
&lt;br /&gt;
ShapeReader shapeReader2 = ctx.getFormats().getGeoJsonReader();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A ShapeReader &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WKT ===&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=517</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=517"/>
		<updated>2017-05-13T18:09:26Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* GeoJSON műveletek */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
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.&lt;br /&gt;
Az olvasáshoz egy ShapeReader típusú objektumra lesz szükségünk:&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=391</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=391"/>
		<updated>2017-04-24T17:47:24Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alapok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Habár a konstruktorok használata nincs megtiltva, azok használata általában mégsem ajánlott, kivéve a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; esetében. Konstruktorok helyett a különböző factory objektumokat használjuk, melyek a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokon keresztül érhetőek el.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=390</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=390"/>
		<updated>2017-04-24T17:46:29Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alapok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=389</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=389"/>
		<updated>2017-04-24T17:37:47Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alapok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;lt;code&amp;gt;SpatialContext&amp;lt;/code&amp;gt; osztály példányain keresztül érhetjük el. Háromféle módon hozhatunk létre &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányokat. Ez egyik, hogy globális, singleton példányt használunk:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;lt;code&amp;gt;.property&amp;lt;/code&amp;gt; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk. Ezt a &amp;lt;code&amp;gt;SpatialContextFactory&amp;lt;/code&amp;gt; osztály statikus metódusával tehetjük meg:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ha poligonokat is akarunk használni, akkor mindkét esetben lehetőség van a JTS-ben levő megfelelőjét használni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=388</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=388"/>
		<updated>2017-04-24T17:32:59Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext globalContext = SpatialContext.GEO;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a SpatialContextFactory segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 SpatialContext nonGeodesicContext = new SpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A harmadik lehetőséggel létrehozásnál megadhatunk név-érték párokat (ezeket akár egy &amp;#039;&amp;#039;.property&amp;#039;&amp;#039; fájlból is felolvashatjuk), melyekkel inicializálódik a &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; példányunk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
SpatialContext propertiesContext = SpatialContextFactory.makeSpatialContext(map, classLoader);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ha poligonokat is akarunk használni, akkor mindkét esetben lehetőség van a JTS-ben levő megfelelőjét használni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JtsSpatialContext polygonGlobalContext = JtsSpatialContext.GEO;&lt;br /&gt;
JtsSpatialContext nonGeodesicPolygonContext = new JtsSpatialContextFactory().newSpatialContext();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=315</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=315"/>
		<updated>2017-04-03T19:12:17Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: /* Alapok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
A könyvtár által nyújtott lehetőségeket &amp;#039;&amp;#039;SpatialContext&amp;#039;&amp;#039; 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:&lt;br /&gt;
&lt;br /&gt;
A másik esetben pedig a SpatialContextFactory segítségével hozunk létre egy új context példányt:&lt;br /&gt;
&lt;br /&gt;
A harmadik:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ha poligonokat is akarunk használni, akkor mindkét esetben lehetőség van a JTS-ben levő megfelelőjét használni:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=305</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=305"/>
		<updated>2017-03-28T11:21:32Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
A Spatial4J legnagyobb részét az alakzatok teszik ki. Az alakzatok különböző vetületekben is rendelkezésre állnak:&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Az alakzatok mindegyike rendelkezik a következő tulajdonságokkal:&lt;br /&gt;
* bounding box kiszámítása&lt;br /&gt;
* terület kiszámítása (néhány alakzatnál ez inkább csak becslés)&lt;br /&gt;
* tartalmaz-e egy adott pontot&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
Alakzatok használata: A SpatialContext make metódusaival hozhatunk létre alakzatokat (pl. makePoint, makeRectangle, stb.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=304</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=304"/>
		<updated>2017-03-28T11:04:23Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;br /&gt;
&lt;br /&gt;
== Alapok ==&lt;br /&gt;
&lt;br /&gt;
== Alakzatok ==&lt;br /&gt;
&lt;br /&gt;
== GeoJSON műveletek ==&lt;br /&gt;
&lt;br /&gt;
== WKT műveletek ==&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=303</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=303"/>
		<updated>2017-03-28T10:59:25Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &amp;#039;&amp;#039;&amp;#039;Spatial4j&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; és &amp;#039;&amp;#039;&amp;#039;WKT&amp;#039;&amp;#039;&amp;#039;(Well Known Text) formátumokból .&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
Eredetileg &amp;#039;&amp;#039;&amp;#039;Lucene Spatial Playgroundként (LSP)&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;&amp;#039;LocationTech&amp;#039;&amp;#039;&amp;#039;-hez került (Eclipse).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ JTS] alapú osztályokat (nevük Jts prefixszel kezdődik) szeretnénk használni, akkor ezen felül szükséges a &amp;#039;&amp;#039;&amp;#039;JTS API&amp;#039;&amp;#039;&amp;#039; is (2 dimenziós alakzatok modellezésére és manipulálására szolgál). &amp;#039;&amp;#039;&amp;#039;GeoJSON&amp;#039;&amp;#039;&amp;#039; feldolgozásához pedig a [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=302</id>
		<title>Spatial4J</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Spatial4J&amp;diff=302"/>
		<updated>2017-03-28T10:55:51Z</updated>

		<summary type="html">&lt;p&gt;Laczkó Dóra: Új oldal, tartalma: „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 …”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
== Történet ==&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Függőségek ==&lt;br /&gt;
A könyvtár használatához legalább a Java 1.7-es verziója szükséges. Ha poligonokat és [https://sourceforge.net/projects/jts-topo-suite/ 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 [https://github.com/yonik/noggit Noggit JSON] elemző könyvtárra is szükség lesz.&lt;/div&gt;</summary>
		<author><name>Laczkó Dóra</name></author>
		
	</entry>
</feed>