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

Innen: GIS Wiki
42. sor: 42. sor:
 
=== Geometriai modell ===
 
=== Geometriai modell ===
 
A geometria modell segítségével pontokat, vonalakat, íveket, sokszögeket és sokszögek gyűjteményét lehet definiálni.  
 
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:
 
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  
 
* GeometryCollection: geometriai objektumok tárolására szolgál  
60. sor: 62. sor:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
* LinearRing (körvonal): koordináták tömbjéből áll, ahol az első és az utolsó koordináta megegyezik
 
* LinearRing (körvonal): koordináták tömbjéből áll, ahol az első és az utolsó koordináta megegyezik
 +
<syntaxhighlight lang="java">
 +
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) });
 +
</syntaxhighlight>
 
* MultiLineString (vonalak halmaza): LineString típusú objektumokból álló gyűjtemény (GeometryCollection)  
 
* MultiLineString (vonalak halmaza): LineString típusú objektumokból álló gyűjtemény (GeometryCollection)  
 +
<syntaxhighlight lang="java">
 +
GeometryFactory fact = new GeometryFactory();
 +
MultiLineString mls = fact.createMultiLineString(new LineString[] {ls1, ls2, ls3, ls4});
 +
</syntaxhighlight>
 
* 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
 
* 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
 +
<syntaxhighlight lang="java">
 +
GeometryFactory fact = new GeometryFactory();
 +
Polygon polygon = fact.createPolygon(coordinates);
 +
</syntaxhighlight>
 
* MultiPolygon (sokszögek halmaza): sokszögekből álló gyűjtemény (GeometryCollection)
 
* MultiPolygon (sokszögek halmaza): sokszögekből álló gyűjtemény (GeometryCollection)
 +
<syntaxhighlight lang="java">
 +
GeometryFactory fact = new GeometryFactory();
 +
MultiPolygon mp = fact.createMultiPolygon(polygons);
 +
</syntaxhighlight>
 +
  
 
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ó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.

A lap 2017. április 29., 23:03-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ó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 funkciók, algoritmusok

A geometriai metódusok feltételezik, hogy a paraméterül szolgáló geometriák helyesek. 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

Adatszerkezetek és algoritmusok

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