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

Innen: GIS Wiki
83. sor: 83. sor:
  
  
Geometriai objektumok közötti egyezőség vizsgálatára szolgál a normálformájuk. Ennek segítségével a topológii egyezőségnél pontosabb ekvivalencia vizsgálható, de a pontról pontra való vizsgálatnál gyengébb. A normálforma a koordináták lexikografikus rendezéseként van megvalósítva.
+
Geometriai objektumok közötti egyezőség vizsgálatára szolgál a normálformájuk. Ennek segítségével a topológiai egyezőségnél pontosabb ekvivalencia vizsgálható, de a pontról pontra való vizsgálatnál gyengébb. A normálforma a koordináták lexikografikus rendezéseként van megvalósítva.
  
 
=== Geometriai funkciók, algoritmusok ===
 
=== Geometriai funkciók, algoritmusok ===
 
A geometriai metódusok feltételezik, hogy a paraméterül szolgáló geometriák helyesek.
 
A geometriai metódusok feltételezik, hogy a paraméterül szolgáló geometriák helyesek.
 +
==== Geometriák közötti kapcsoltatok ====
 
Ki lehet számítani a megadott geometriák közötti kapcsolatot. A kapott érték lehet:
 
Ki lehet számítani a megadott geometriák közötti kapcsolatot. A kapott érték lehet:
 
* ekvivalencia: a geometriák topológiailag ekvivalensek
 
* ekvivalencia: a geometriák topológiailag ekvivalensek
96. sor: 97. sor:
 
* átfedő: a geometriák néhány, de nem az összes pontja közös és a metszet dimenziója megegyezik a geometriák dimenziójával
 
* átfedő: a geometriák néhány, de nem az összes pontja közös és a metszet dimenziója megegyezik a geometriák dimenziójával
  
 +
==== Pufferek ====
 +
Kiszámíthatóak a geometriák körüli pufferek, egy távolság megadásával. Ekkor kiszámítja a geometria körüli területet a megadott távolságon belül. Megkülönböztet pozitív és negatív puffert. A pozitív puffer mindig tartalmazza az adott geometriát, míg a negatív a geometrián belül található (pl.: egy sokszög belseje).
 +
 +
A pufferek végének a létrehozásához három lehetőség közül lehet választani:
 +
* Lekerekítés: lekerekíti a puffer sarkait
 +
* Közvetlen a vonal végén végződik a puffer is, nincs lekerekítve
 +
* A puffer a vonal után, a puffernek megadott távolságra végződik, a sarkai nincsenek lekerekítve
 +
 +
<syntaxhighlight lang="java">
 +
Geometry geom = fact.createLineString(new Coordinate[] { new Coordinate(0,0), new Coordinate(1,1), new Coordinate(2, 3) } );
 +
BufferOp bufOp = new BufferOp(geom);
 +
bufOp.setEndCapStyle(BufferParameters.CAP_ROUND);
 +
Geometry buffer = bufOp.getResultGeometry(distance);
 +
</syntaxhighlight>
 +
 +
==== Sokszögesítés ====
 +
A sokszögesítés során vonalakból és szakaszokból, melyek egy sokszöget zárnak körbe, jön létre egy sokszög.
 
=== Adatszerkezetek és algoritmusok ===
 
=== Adatszerkezetek és algoritmusok ===
 
+
A JTS programcsomag a következő, térinformatikai számításokhoz szükséges algoritmusokat szolgáltatja a felhasználóknak:
 +
*
  
 
== Példák ==
 
== Példák ==

A lap 2017. április 30., 22:53-kori változata

A JTS (Java Topology Suite) egy nyílt forráskódú Java könyvtár síkgeometriai alakzatok modellezéséhez és informatikai alkalmazásukhoz. Az OpenGIS által kiadott "Simple Features Specification for SQL" leírásban meghatározott geometriai modelleket és API-kat implementálja.


Használat

Használatához legalább Java 1.6 verzió szükséges. Maven segítségével a projektbe importálható, csupán a következő sorokat kell bemásolni a pom.xml-be.

<dependency>
    <groupId>com.vividsolutions</groupId>
    <artifactId>jts</artifactId>
    <version>1.13</version>
</dependency>

Felépítés

Alap modulok

jts-core: geometriák, geometriai függvények, algoritmusok, térbeli adatszerkezetek

jts-io-common: I/O osztályok térbeli adatszerkezetekhez

Teszteléshez használt modulok

jts-tests: a JTS XML teszt komponens és a Test Runner alkalmazás

jts-app: TestBuilder GUI a JTS geometriák teszteléséhez

Egyéb

jts-io-ora: Oracle író-,olvasó osztályok

jts-io-sde: SDE író-,olvasó osztályok

Felhasználási lehetőségei, jelenlegi felhasználása

Geometriai alakzatok készítéséhez, geometriai függvények alkalmazásához, számításokhoz használható. Támogatja a WKT (Well Known Test) és WKB (Well Known Binary) formátumokat.

Egyéb térinformatikai projektek is használják a JTS programcsomagot. Pl.:

  • GeoTools
  • GeoServer
  • Geoforge


Főbb funkcionalitások

Geometriai modell

A geometria modell segítségével pontokat, vonalakat, íveket, sokszögeket és sokszögek gyűjteményét lehet definiálni.

Geometriai típusok készíthetőek a GeometryFactory osztály segítségével, illetve WKT és WBT formában is meg lehet adni őket. A geometriákat reprezentáló osztályok a Geometry absztrakt osztályból származnak. Geometriai típusok:

  • GeometryCollection: geometriai objektumok tárolására szolgál
  • Point (pont): egy koordinátapárral van reprezentálva
GeometryFactory fact = new GeometryFactory();
Point p1 = fact.createPoint(new Coordinate(0,0));
  • MultiPoint (pontok halmaza): kizárólag pontokat tartalmazó gyűjtemény (GeometryCollection)
GeometryFactory fact = new GeometryFactory();
MultiPoint mpt = fact.createMultiPoint(new Coordinate[] { new Coordinate(0,0), new Coordinate(1,1) } );
  • LineString (vonal): pontok tömbje határozza meg
GeometryFactory fact = new GeometryFactory();
LineString ls = fact.createLineString(new Coordinate[] { new Coordinate(0,0), new Coordinate(1,1), new Coordinate(2, 3) } );
  • LinearRing (körvonal): koordináták tömbjéből áll, ahol az első és az utolsó koordináta megegyezik
GeometryFactory fact = new GeometryFactory();
LinearRing lr = fact.createLinearRing(new Coordinate[] { new Coordinate(0,0), new Coordinate(1,1), new Coordinate(2, 3), new Coordinate(0, 0) });
  • MultiLineString (vonalak halmaza): LineString típusú objektumokból álló gyűjtemény (GeometryCollection)
GeometryFactory fact = new GeometryFactory();
MultiLineString mls = fact.createMultiLineString(new LineString[] {ls1, ls2, ls3, ls4});
  • Polygon (sokszög): egy LinearRing típusú objektum határozza meg a körvonalát és LinearRing típusú objektumok tömbje adja a lyukakat
GeometryFactory fact = new GeometryFactory();
Polygon polygon = fact.createPolygon(coordinates);
  • MultiPolygon (sokszögek halmaza): sokszögekből álló gyűjtemény (GeometryCollection)
GeometryFactory fact = new GeometryFactory();
MultiPolygon mp = fact.createMultiPolygon(polygons);


Geometriai objektumok közötti egyezőség vizsgálatára szolgál a normálformájuk. Ennek segítségével a topológiai egyezőségnél pontosabb ekvivalencia vizsgálható, de a pontról pontra való vizsgálatnál gyengébb. A normálforma a koordináták lexikografikus rendezéseként van megvalósítva.

Geometriai funkciók, algoritmusok

A geometriai metódusok feltételezik, hogy a paraméterül szolgáló geometriák helyesek.

Geometriák közötti kapcsoltatok

Ki lehet számítani a megadott geometriák közötti kapcsolatot. A kapott érték lehet:

  • ekvivalencia: a geometriák topológiailag ekvivalensek
  • diszjunkt: a geometriáknak nincs között pontjuk
  • metsző: a geometriáknak van legalább egy közös pontja
  • érintkező: a geometriák határának van legalább egy közös pontja, de egyik belső pontjuk sem közös
  • tartalmazott: az A geometria benne van a B geometriában
  • tartalmazó: a B geometria benne van az A geometriában
  • átfedő: a geometriák néhány, de nem az összes pontja közös és a metszet dimenziója megegyezik a geometriák dimenziójával

Pufferek

Kiszámíthatóak a geometriák körüli pufferek, egy távolság megadásával. Ekkor kiszámítja a geometria körüli területet a megadott távolságon belül. Megkülönböztet pozitív és negatív puffert. A pozitív puffer mindig tartalmazza az adott geometriát, míg a negatív a geometrián belül található (pl.: egy sokszög belseje).

A pufferek végének a létrehozásához három lehetőség közül lehet választani:

  • Lekerekítés: lekerekíti a puffer sarkait
  • Közvetlen a vonal végén végződik a puffer is, nincs lekerekítve
  • A puffer a vonal után, a puffernek megadott távolságra végződik, a sarkai nincsenek lekerekítve
Geometry geom = fact.createLineString(new Coordinate[] { new Coordinate(0,0), new Coordinate(1,1), new Coordinate(2, 3) } );
BufferOp bufOp = new BufferOp(geom);
bufOp.setEndCapStyle(BufferParameters.CAP_ROUND);
Geometry buffer = bufOp.getResultGeometry(distance);

Sokszögesítés

A sokszögesítés során vonalakból és szakaszokból, melyek egy sokszöget zárnak körbe, jön létre egy sokszög.

Adatszerkezetek és algoritmusok

A JTS programcsomag a következő, térinformatikai számításokhoz szükséges algoritmusokat szolgáltatja a felhasználóknak:

Példák

Hivatkozások

https://github.com/locationtech/jts

https://www.locationtech.org/proposals/jts-topology-suite

https://en.wikipedia.org/wiki/JTS_Topology_Suite