====== API Programmierschnittstelle ======
===== - API v1.0 =====
==== - Aufbau des API Calls ====
=== - API Key ===
Die Nutzung des BEV Transformators mit einem API-Key ist nur mit einer gleichzeitigen Registrierung für das BEV Produkt-Webservice möglich. Dafür ist eine ABO-Vereinbarung mit Zahlungsart Bankeinzug erforderlich. Für die Freischaltung des BEV Produkt-Webservice wird ein BEV-Portal Benutzer/eine BEV-Portal Benutzerin benötigt. Ist kein freier Benutzer/keine freie Benutzerin mehr verfügbar, wird der Kunde/die Kundin vom BEV automatisch umgestellt. Diese Umstellung ist kostenlos und verursacht keine Folgekosten.
Die Schritte im Überblick:
* ListenpunktABO-Kunde mit Bankeinzug (Kunden/Kundinnen mit anderem Servicepaket werden kostenfrei auf das ABO-Paket mit Bankeinzug umgestellt)
* Bestellung mittels Bestellformular
* Zustellung des API-Keys per E-Mail durch das Kundenservice des BEV
=== - request ===
Bei jedem Request muss der API Key mitgeschickt werden um die Authentifizierung durchführen zu können.
Weiters muss der ContentType angegeben werden.
{
"Content-Type": "application/json;charset=utf-8",
"Authorization": "Token YOUR_TOKEN"
}
=== - response ===
In jedem Response gibt es einen **meta**-Block. In diesem Bereich werden folgende Informationen zurückgegeben:
* **datetime**: Zeitpunkt der Transformation
* **report\_key**: Nur Im KatasterModus verfügbar. Wird benötigt um einen pdf-Report zu erstellen.
* **token**: Ihr API Key der für die Authentifizierung verwendet wurde.
* **points**: Die Anzahl der Transformierten Punkte.
* **user**: Der Username der dem Token zugeordnet ist.
* **request\_url**: Die URl mit der das Ergebnis berechnet wurde.
Der Block **result** ist individuell und wird bei jedem Modus extra beschrieben.
{
"meta": {
"datetime":"2019-06-21 07:52:06.357773+00:00",
"report_key":"76f77ad093f911e980fe0050568d2858",
"token":"YOUR_TOKEN",
"points":1,
"user":"anonymous",
"request_url":"/at.gv.bev.transformator/api/v1.0/helmert/2d/transformation/"
},
"result": {
"points":{...}
}
}
==== - Models ====
Für den request werden verschiedene Models verwendet. Die Verwendung wird bei den einzelnen Modi erklärt.
Die Definition ist wie folgt:
=== - CRS ===
{{ :wiki:advanced_wiki.png?200|}}
In diesem Model wird ein Coordinate Reference System (CRS) zur Gänze beschrieben. Der ausführliche Aufbau ist [[transformator:advanced|hier]] erklärt.
Der Aufbau kann immer nur hierarchisch erfolgen.
Für die Definition von **Geozentrischen Koodinaten** ist folgende Eingabe erforderlich:
* frame
* epoch
Für die Definition von **Geographischen Koordinaten** benötigt man:
* frame
* epoch
* ellipsoid
* prime\_meridian
Für die Definition von **Projizierten Koordinaten** benötigt man
* frame
* epoch
* ellipsoid
* prime\_meridian
* projection
"crs": {
"frame": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Frame",
"choices": [
{
"value": "101",
"display_name": "ITRF88"
},
{
"value": "102",
"display_name": "ITRF89"
},
{
"value": "103",
"display_name": "ITRF90"
},
{
"value": "104",
"display_name": "ITRF91"
},
{
"value": "105",
"display_name": "ITRF92"
},
{
"value": "106",
"display_name": "ITRF93"
},
{
"value": "107",
"display_name": "ITRF94"
},
{
"value": "108",
"display_name": "ITRF96"
},
{
"value": "109",
"display_name": "ITRF97"
},
{
"value": "110",
"display_name": "ITRF2000"
},
{
"value": "111",
"display_name": "ITRF2005"
},
{
"value": "112",
"display_name": "ITRF2008"
},
{
"value": "113",
"display_name": "ITRF2014"
},
{
"value": "201",
"display_name": "ETRF89"
},
{
"value": "202",
"display_name": "ETRF90"
},
{
"value": "203",
"display_name": "ETRF91"
},
{
"value": "204",
"display_name": "ETRF92"
},
{
"value": "205",
"display_name": "ETRF93"
},
{
"value": "206",
"display_name": "ETRF94"
},
{
"value": "207",
"display_name": "ETRF96"
},
{
"value": "208",
"display_name": "ETRF97"
},
{
"value": "209",
"display_name": "ETRF2000"
},
{
"value": "301",
"display_name": "MGI"
},
{
"value": "302",
"display_name": "WGS84"
}
]
},
"epoch": {
"type": "float",
"required": false,
"read_only": false,
"label": "Epoch",
"help_text": "Epoch of CRS [YYYY.DDD]"
},
"ellipsoid": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Ellipsoid",
"choices": [
{
"value": "EPSG::7030",
"display_name": "WGS84"
},
{
"value": "EPSG::7019",
"display_name": "GRS 1980"
},
{
"value": "EPSG::7004",
"display_name": "BESSEL 1841"
},
{
"value": "EPSG::7024",
"display_name": "KRASSOWSKI 1940"
},
{
"value": "EPSG::7022",
"display_name": "HAYFORD International 1924"
}
]
},
"prime_meridian": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Prime meridian",
"choices": [
{
"value": "EPSG::8912",
"display_name": "Athens"
},
{
"value": "EPSG::8907",
"display_name": "Bern"
},
{
"value": "EPSG::8904",
"display_name": "Bogota"
},
{
"value": "EPSG::8910",
"display_name": "Brussels"
},
{
"value": "EPSG::8909",
"display_name": "Ferro"
},
{
"value": "EPSG::8901",
"display_name": "Greenwich"
},
{
"value": "EPSG::8908",
"display_name": "Jakarta"
},
{
"value": "EPSG::8902",
"display_name": "Lisbon"
},
{
"value": "EPSG::8905",
"display_name": "Madrid"
},
{
"value": "EPSG::8913",
"display_name": "Oslo"
},
{
"value": "EPSG::8903",
"display_name": "Paris"
},
{
"value": "EPSG::8914",
"display_name": "Paris RGS"
},
{
"value": "EPSG::8906",
"display_name": "Rome"
},
{
"value": "EPSG::8911",
"display_name": "Stockholm"
}
]
},
"projection": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Projection",
"choices": [
{
"value": "BEV::10028",
"display_name": "BEV-Shop MGI_GK_M28"
},
{
"value": "BEV::10031",
"display_name": "BEV-Shop MGI_GK_M31"
},
{
"value": "BEV::10034",
"display_name": "BEV-Shop MGI_GK_M34"
},
{
"value": "BEV::10035",
"display_name": "BEV-Shop MGI_GK_AUTO"
},
{
"value": "EPSG::18004",
"display_name": "Austria Gauss-Kruger West, Conversion of EPSG::31254"
},
{
"value": "EPSG::18005",
"display_name": "Austria Gauss-Kruger Central, Conversion of EPSG::31255"
},
{
"value": "EPSG::18006",
"display_name": "Austria Gauss-Kruger East, Conversion of EPSG::31256"
},
{
"value": "BEV::10036",
"display_name": "Austria Gauss-Kruger Auto, Conversion of EPSG::31256"
},
{
"value": "EPSG::16032",
"display_name": "UTM zone 32N"
},
{
"value": "EPSG::16033",
"display_name": "UTM zone 33N"
},
{
"value": "EPSG::19947",
"display_name": "Austria Lambert"
}
]
}
=== - Point_Geocentric ===
Für die Übergabe von geozentrischen Koordinaten ist folgende Schreibweise zu verwenden:
* **name**: Punkt Name
* **X**: X-Koordinate [m]
* **Y**: Y-Koordinate [m]
* **Z**: Z-Koordinate [m]
* **v\_X**: Geschwindigkeit in X-Richtung [mm/year]
* **v\_Y**: Geschwindigkeit in Y-Richtung [mm/year]
* **v\_Z**: Geschwindigkeit in Z-Richtung [mm/year]
"point_geocentric": {
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Name",
"max_length": 200
},
"X": {
"type": "float",
"required": true,
"read_only": false,
"label": "X"
},
"Y": {
"type": "float",
"required": true,
"read_only": false,
"label": "Y"
},
"Z": {
"type": "float",
"required": true,
"read_only": false,
"label": "Z"
},
"v_X": {
"type": "float",
"required": false,
"read_only": false,
"label": "V x"
},
"v_Y": {
"type": "float",
"required": false,
"read_only": false,
"label": "V y"
},
"v_Z": {
"type": "float",
"required": false,
"read_only": false,
"label": "V z"
}
}
=== - Point_Geographic ===
Für die Übergabe von geographischen Koordinaten ist folgende Schreibweise zu verwenden:
* **name**: Punkt Name
* **lon**: Longitude (lambda) in Dezimalgrad [°]
* **lat**: Latitude (phi) in Dezimalgrad [°]
* **ele**: Ellipsoidische Höhe in [m]
* **v\_lon**: Geschwindigkeit entlang Ost-Richtung **[mm/year]**
* **v\_lat**: Geschwindigkeit entlang der Nord-Richtung **[mm/year]**
* **v\_ele**: Geschwindigkeit entlang der Höhenkomponente **[mm/year]**
"point_geographic": {
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Name",
"max_length": 200
},
"lon": {
"type": "float",
"required": true,
"read_only": false,
"label": "Lon",
"help_text": "Longitude in decimal degrees"
},
"lat": {
"type": "float",
"required": true,
"read_only": false,
"label": "Lat",
"help_text": "Latitude in decimal degrees"
},
"ele": {
"type": "float",
"required": true,
"read_only": false,
"label": "Ele",
"help_text": "Ellipsoidal height"
},
"v_lon": {
"type": "float",
"required": false,
"read_only": false,
"label": "V lon"
},
"v_lat": {
"type": "float",
"required": false,
"read_only": false,
"label": "V lat"
},
"v_ele": {
"type": "float",
"required": false,
"read_only": false,
"label": "V ele"
}
}
=== - Point_Projected ===
Für die Übergabe von geographischen Koordinaten ist folgende Schreibweise zu verwenden:
* **name**: Punkt Name
* **east**: Wert in Ostrichtung [m]
* **north**: Wert in Nordrichtung [m]
* **height**: Höhe [m]
* **v\_east**: Geschwindigkeit entlang Ost-Richtung **[mm/year]**
* **v\_north**: Geschwindigkeit entlang der Nord-Richtung **[mm/year]**
* **v\_height**: Geschwindigkeit entlang der Höhenkomponente **[mm/year]**
"point_projected": {
"name": {
"type": "string",
"required": true,
"read_only": false,
"label": "Name",
"max_length": 200
},
"east": {
"type": "float",
"required": true,
"read_only": false,
"label": "East"
},
"north": {
"type": "float",
"required": true,
"read_only": false,
"label": "North"
},
"height": {
"type": "float",
"required": false,
"read_only": false,
"label": "Height"
},
"v_east": {
"type": "float",
"required": false,
"read_only": false,
"label": "V east"
},
"v_north": {
"type": "float",
"required": false,
"read_only": false,
"label": "V north"
},
"v_height": {
"type": "float",
"required": false,
"read_only": false,
"label": "V height"
}
}
=== - Weitere allgemeingültige Auswahlmöglichkeiten ===
Bei verschiedenen Modi ist eine Höhen- bzw Meridianeingabe notwendig.
Die Auswahlmöglichkeiten für diese Werte finden sie nachstehend.
"height": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Height",
"choices": [
{
"value": "ortho",
"display_name": "Orthometrisch"
},
{
"value": "ellps",
"display_name": "Ellipsoidisch"
},
{
"value": "usage",
"display_name": "Gebrauchshoehe"
}
]
},
"meridian": {
"type": "choice",
"required": false,
"read_only": false,
"label": "Meridian",
"choices": [
{
"value": "GK_AUTO",
"display_name": "Automatic definition of Referenze Meridian"
},
{
"value": "GK_M28",
"display_name": "MGI/GK Meridian M28 (West)"
},
{
"value": "GK_M31",
"display_name": "MGI/GK Meridian M21 (Central)"
},
{
"value": "GK_M34",
"display_name": "MGI/GK Meridian M34 (East)"
}
]
}
==== - Datumstransformation ====
Modus zur Tranformation von unterschiedlichen [[wiki:dattrans|Datumsschreibweisen]]. Die Datumstransformation stellt eine Sonderform dar, da für den request kein API-Key notwendig ist und der response keine **META** Informationen zurückgibt.
Übergabeparameter:
{
"category": {
"type": "choice",
"required": true,
"read_only": false,
"label": "Category",
"choices": [
{
"value": "mjd",
"display_name": "Float::Modified Julian Date"
},
{
"value": "bdat",
"display_name": "YYYY-MM-DD::Date"
},
{
"value": "gpsweek",
"display_name": "WWWW.D::GPSWeek and Day of Week"
},
{
"value": "ydoy",
"display_name": "YYYY.DDD::Year and Day of Year"
},
{
"value": "yr",
"display_name": "YYYY.FF::Fractional Year (YYYY.50 = Half of year)"
}
]
},
"value": {
"type": "string",
"required": true,
"read_only": false,
"label": "Value",
"max_length": 50
}
}
=== - Beispiel ===
request:
POST /at.gv.bev.transformator/api/v1.1/datetime/ HTTP/1.1
Host: https://transformator.bev.gv.at
Content-Type: application/json
Accept: application/json, text/plain, */*
{
"category": "bdat",
"value": "2002-07-19"
}
response:
{
"error": null,
"ut": 0,
"year": 2019,
"month": 7,
"day": 1,
"jd": 2458665.5,
"mjd": 58665.0,
"gpsweek": "2060.1",
"dow": 1,
"sow": 86400,
"hour": 0,
"minute": 0,
"second": 0,
"tag0": 2458483.5,
"doy": 182,
"iso": "2019-07-01T00:00:00",
"isoblank": "2019 07 01 00 00 00",
"bdat": "2019-07-01",
"yr": 2019.5,
"ydoy": "2019.182"
}
==== - Kataster ====
Der Kataster-Mode unterteilt sich in zwei Schritte. Beim ersten Schritt der Determination werden mit Passpunkten 2d-Transformationsparameter berechnet, die beim zweiten Schritt der Transformation wieder übergeben werden müssen.
=== - Determination ===
POST /at.gv.bev.transformator/api/v1.0/cadastre/determination/ HTTP/1.1
Host: https://transformator.bev.gv.at
Content-Type: application/json
Authorization: Token YOUR_TOKEN
{
"source_points": [{Geocentric_Point}, {Geocentric_Point}, ... ]
"fix_scale": false,
"target_points": [{Projected_Point}, {Projected_Point}, ... ]
}
**Beispiel in cURl:
**
curl -X POST \
https://transformator.bev.gv.at/at.gv.bev.transformator/api/v1.0/cadastre/determination/ \
-H 'Content-Type: application/json' \
-H 'Authorization: Token YOUR_TOKEN' \
-H 'Accept: application/json, text/plain, */*' \
-d '{
"source_points": [
{
"name": "83015-0041A1",
"X": 4217534.793,
"Y": 907752.004,
"Z": 4682895.595
},
{
"name": "83015-0055A2",
"X": 4217134.846,
"Y": 908663.169,
"Z": 4683147.703
},
{
"name": "83015-0118A1",
"X": 4217871.591,
"Y": 908238.154,
"Z": 4682584.843
},
{
"name": "83015-0119A1",
"X": 4217465.299,
"Y": 908205.674,
"Z": 4682894.753
},
{
"name": "83015-0122E1",
"X": 4217199.508,
"Y": 908041.549,
"Z": 4683157.886
},
{
"name": "83015-0123E1",
"X": 4217416.312,
"Y": 908053.186,
"Z": 4682952.06
}
],
"fix_scale": false,
"target_points": [
{
"name": "83015-0041A1",
"east": -89288.81,
"north": 267365.42
},
{
"name": "83015-0055A2",
"east": -88309.11,
"north": 267667.56
},
{
"name": "83015-0118A1",
"east": -88892.5,
"north": 266831.07
},
{
"name": "83015-0119A1",
"east": -88830.98,
"north": 267337.46
},
{
"name": "83015-0122E1",
"east": -88929.43,
"north": 267733.82
},
{
"name": "83015-0123E1",
"east": -88968.22,
"north": 267437.31
}
]
}'
**Ergebnis:**
{
"meta": {
"request_url": "/api/v1.0/cadastre/determination/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-06-24 12:25:05.784785+00:00",
"points": 1,
"report_key": "191af9f0967b11e9a9180242ac190004"
},
"result": {
"s02": 0.0004,
"params": {
"translation_east": -0.3934,
"translation_north": 0.136,
"rotation": -0.00005469,
"scale": 1.00000211,
"centroid_east": -88869.4483,
"centroid_north": 267395.304
},
"sigmas": {
"translation_east": 0.0129,
"translation_north": 0.0129,
"scale": 0.00003126,
"rotation": 0.00003126,
"centroid_east": null,
"centroid_north": null
},
"residuals": [
{
"name": "83015-0041A1",
"east": 0.052,
"north": -0.033,
"height": 600.658
},
{
"name": "83015-0055A2",
"east": 0.028,
"north": 0.006,
"height": 652.211
},
{
"name": "83015-0118A1",
"east": -0.028,
"north": 0.011,
"height": 662.773
},
{
"name": "83015-0119A1",
"east": -0.017,
"north": 0.016,
"height": 618.634
},
{
"name": "83015-0122E1",
"east": -0.01,
"north": 0.025,
"height": 614.034
},
{
"name": "83015-0123E1",
"east": -0.025,
"north": -0.024,
"height": 606.913
}
],
"improvements": [
{
"name": "83015-0041A1",
"east": 3.2,
"north": -2
},
{
"name": "83015-0055A2",
"east": 2.1,
"north": 0.4
},
{
"name": "83015-0118A1",
"east": -1.9,
"north": 0.7
},
{
"name": "83015-0119A1",
"east": -0.9,
"north": 0.9
},
{
"name": "83015-0122E1",
"east": -0.6,
"north": 1.5
},
{
"name": "83015-0123E1",
"east": -1.4,
"north": -1.3
}
]
}
}
=== - Transformation ===
Die oben bestimmten Parameter können jetzt verwendet werden um zusätzliche Neupunkte in das System des Katasters zu transformieren.
request:
POST /at.gv.bev.transformator/api/v1.0/cadastre/transformation/ HTTP/1.1
Host: https://transformator.bev.gv.at
Content-Type: application/json
Accept: application/json, text/plain, */*
Authorization: Token YOUR_TOKEN
{
"helmert_parameter": {4-Parameter},
"use_height_grid": true,
"height_shift": false,
"source_points": [{Geocentric_Point}, {Geocentric_Point} ]
}
Beispiel in cURl:
curl -X POST \
https://transformator.bev.gv.at/at.gv.bev.transformator/api/v1.0/cadastre/transformation/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Authorization: Token YOUR-TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"helmert_parameter": {
"de": -0.3934,
"dn": 0.136,
"ce": -88869.4483,
"cn": 267395.304,
"m": 1.00000211,
"r": -0.00005469
},
"use_height_grid": true,
"height_shift": false,
"source_points": [
{
"name": "11",
"X": 4217645.793,
"Y": 907864.004,
"Z": 4683006.595
},
{
"name": "12",
"X": 4217245.846,
"Y": 908775.169,
"Z": 4683258.703
},
{
"name": "13",
"X": 4217982.591,
"Y": 908350.154,
"Z": 4682695.843
},
{
"name": "14",
"X": 4217576.299,
"Y": 908317.674,
"Z": 4683005.753
}
]
}'
Ergebnis:
{
"meta": {
"request_url": "/api/v1.0/cadastre/transformation/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-06-25 09:32:31.113754+00:00",
"points": 4,
"report_key": "27a779b6972c11e99c910242ac190004"
},
"result": {
"points": {
"type": "FeatureCollection",
"props": {
"representation": "Projected",
"array_columns": [
"Name",
"East",
"North",
"Height"
],
"units": [
"Name",
"Rechtswert [m]",
"Hochwert [m]",
"Hoehe [m]"
]
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-89202.98,
267341.559,
819.469
]
},
"properties": {
"name": "11",
"crs": "MGI_GK_GK_AUTO"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-88223.333,
267643.729,
871.026
]
},
"properties": {
"name": "12",
"crs": "MGI_GK_GK_AUTO"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-88806.762,
266807.268,
881.594
]
},
"properties": {
"name": "13",
"crs": "MGI_GK_GK_AUTO"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-88745.232,
267313.648,
837.449
]
},
"properties": {
"name": "14",
"crs": "MGI_GK_GK_AUTO"
}
}
]
}
}
}
==== - Helmert ====
=== - Determination ===
Berechnung eigener Transformationsparameter für die ebene oder die räumliche Helmert-Transformation aus Identpunkten.
Bitte geben Sie mindestens 2 Punkte für die Bestimmung der Parameter für 2D-Bestimmung ein. Die Identpunkte werden nicht über die Reihenfolge sondern über den Punktnamen miteinander verknüpft.
== - 2d ==
Beispiel mit drei Identpunkten:
curl -X POST \
https://transformator.bev.gv.at/at.gv.bev.transformator/api/v1.0/helmert/2d/determination/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Authorization: Token YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"source_points": [
{
"name": "P1",
"east": 12.341,
"north": 44.591
},
{
"name": "P2",
"east": 10.491,
"north": 55.194
},
{
"name": "P3",
"east": 11.149,
"north": 29.482
}
],
"target_points": [
{
"name": "P1",
"east": 36.852885,
"north": 100.282425
},
{
"name": "P2",
"east": 35.002608,
"north": 110.885403
},
{
"name": "P3",
"east": 35.66127,
"north": 85.173358
}
]
}'
Ergebnis:\\
**meta**: siehe oben\\
**result**:
* **params:** 4 Transformationsparameter
* **sigmas:** Genauigkeiten der Transformationsparameter
* **s02\_posteriori:** Posteriori Genauigkeit
* **s02\_apriori:** Apriori Genauigkeit
{
"meta": {
"request_url": "/api/v1.0/helmert/2d/determination/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-06-25 11:11:40.802495+00:00",
"points": 1
},
"result": {
"params": {
"translation_east": 24.5119,
"translation_north": 55.6914,
"rotation": 0.00002568,
"scale": 1.00000241
},
"sigmas": {
"translation_east": 0,
"translation_north": 0,
"scale": 1e-8,
"rotation": 1e-8
},
"s02_posteriori": 1.4075506643740682e-14,
"s02_apriori": 1
}
}
== - 3d ==
Für die Bestimmung von 7-Parametern, also mit 3-dimensionalen Eingangspunkten ist der request vom Prinzip ident zu der 2d-Variante aufgebaut. Die einzelnen Punkte sind hier allerdings **Geocentric_Points**.
**Beispiel**
curl -X POST \
https://transformator.bev.gv.at/at.gv.bev.transformator/api/v1.0/helmert/3d/determination/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Authorization: Token YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"source_points": [
{
"name": "Punkt1",
"X": 13.14,
"Y": 25.26,
"Z": 39
},
{
"name": "Punkt2",
"X": 34.35,
"Y": 67.68,
"Z": 112
},
{
"name": "Punkt3",
"X": 35.35,
"Y": 68.68,
"Z": 113
}
],
"target_points": [
{
"name": "Punkt1",
"X": 47,
"Y": 11,
"Z": 78
},
{
"name": "Punkt2",
"X": 48,
"Y": 20,
"Z": 111
},
{
"name": "Punkt3",
"X": 49,
"Y": 21,
"Z": 112
}
]
}'
**Ergebnis**
{
"meta": {
"request_url": "/api/v1.0/helmert/3d/determination/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-06-29 09:35:18.328697+00:00",
"points": 1
},
"result": {
"params": {
"translation_x": 45.8768,
"translation_y": 4.8599,
"translation_z": 59.8545,
"rotation_x": -0.27320539,
"rotation_y": 0.10319804,
"rotation_z": -0.26286031,
"scale": 0.39126504
},
"sigmas": {
"translation_x": 2.3852,
"translation_y": 1.6855,
"translation_z": 0.896,
"scale": 0.00765225,
"rotation_x": 0.26448941,
"rotation_y": 0.52256488,
"rotation_z": 0.89470661
},
"s02_posteriori": 0.3012928555894006,
"s02_apriori": 1
}
}
=== - Transformation ===
Die Helmert Transformation passiert mit der Eingabe von 4 Parametern im 2-dimensionalen Fall, oder 7 Parametern im 3-dimensionalen Fall. Zusätzlich müssen die zu transformierenden Punkte angegeben werden. Die Ergebnisse aus der Helmert-Determination können direkt übergeben werden.
== - 2d ==
curl -X POST \
https://transformator.bev.gv.at/at.gv.bev.transformator/api/v1.0/helmert/2d/transformation/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Authorization: Token YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"de": 24.5119,
"dn": 55.6914,
"m": 1.00000241,
"r": 0.00002568,
"points": [
{
"name": "Punkt1",
"east": 10,
"north": 10
}
]
}'
Ergebnis
{
"meta": {
"request_url": "/api/v1.0/helmert/2d/transformation/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-07-01 06:41:09.491230+00:00",
"points": 1
},
"result": {
"points": {
"type": "FeatureCollection",
"props": {
"representation": "Projected",
"array_columns": [
"Name",
"East",
"North"
],
"units": [
"Name",
"Rechtswert [m]",
"Hochwert [m]"
]
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
34.512,
65.692
]
},
"properties": {
"name": "Punkt1",
"crs": "Target System"
}
}
]
}
}
}
== - 3d ==
Die Punkte müssen wieder als **Geocentric\_Point** übergeben werden.
curl -X POST \
https://transformator.bev.gv.at/at.gv.bev.transformator/api/v1.0/helmert/3d/transformation/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Authorization: Token YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"dx": 45.8768,
"dy": 4.8599,
"dz": 59.8545,
"m": 0.39126504,
"rx": -0.27320539,
"ry": 0.10319804000000002,
"rz": -0.26286031,
"points": [
{
"name": "GRAZ 11001M002",
"X": 4194423.59769,
"Y": 1162702.92694,
"Z": 4647245.55073
}
]
}'
**Ergebnis**
{
"meta": {
"request_url": "/api/v1.0/helmert/3d/transformation/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-07-01 06:44:10.769107+00:00",
"points": 1
},
"result": {
"points": {
"type": "FeatureCollection",
"props": {
"representation": "Geocentric",
"array_columns": [
"Name",
"X",
"Y",
"Z"
],
"units": [
"Name",
"X [m]",
"Y [m]",
"Z [m]"
]
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
1403651.5903,
323265.2224,
2032766.0658
]
},
"properties": {
"name": "GRAZ 11001M002",
"crs": "Target System"
}
}
]
}
}
}
==== - Advanced ====
Im Advanced Mode ist man von der Berechnung am freisten. Es können sämtliche Kombinationen von Koordinatensystemelementen frei kombiniert werden. Abhängig von der Wahl des "source\_crs" wird entschieden welche Punkte verwendet werden. Ist also Beispielsweise im "source\_crs" //frame, epoch, ellipsoid und prime\_meridian// definiert, dann werden für die Berechnung nur die Punkte unter "points\_geographic" verwendet.
** Aufbau des calls **
POST /api/v1.0/advanced/ HTTP/1.1
Host: https://transformator.bev.gv.at
Accept: application/json, text/plain, */*
Content-Type: application/json;charset=UTF-8
{
"source_crs": {crs},
"target_crs": {crs},
"points_projected": [{Projected_Point}, {Projected_Point}, ...],
"points_geographic": [{Geographic_Point}, {Geographic_Point}, ...],
"points_geocentric": [{Geocentric_Point}, {Geocentric_Point}, ...]
}
** Beispiel **
curl -X POST \
https://transformator.bev.gv.at/api/v1.0/advanced/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Authorization: Token YOUR_TOKEN' \
-d '{
"points_geocentric": [
{
"name": "GRAZ 11001M002",
"X": 4194423.59769,
"Y": 1162702.92694,
"Z": 4647245.55073
}
],
"source_crs": {
"frame": 110,
"epoch": 2000
},
"target_crs": {
"ellipsoid": "EPSG::7030",
"frame": 302,
"prime_meridian": "EPSG::8901",
"epoch": 2002.56
}
}'
** Ergebnis **
Unter {result.points.features.geometry.velocities} sind die Geschwindigkeiten des Punktes angegeben. Unter {result.points.features.geometry.coordinates} werden die 3d-Koordinatenwerte zurückgegeben. Unter {result.points.props.units} werden die Bezeichnungen und Einheiten der Werte in der Reihenfolge Punktname, 3 Koordinatenkomponenten, 3 Geschwindigkeitskomponenten beschrieben.
{
"meta": {
"datetime": "2019-06-29 09:57:22.046177+00:00",
"token": "YOUR_TOKEN",
"points": 1,
"user": "anonymous",
"request_url": "/at.gv.bev.transformator/api/v1.0/advanced/"
},
"result": {
"points": {
"type": "FeatureCollection",
"features": [
{
"geometry": {
"velocities": [
0.0001,
-0.0013,
-0.0007
],
"type": "Point",
"coordinates": [
15.493484001,
47.067131879,
538.292
]
},
"type": "Feature",
"properties": {
"crs": "WGS84",
"name": "GRAZ 11001M002",
"velocity_units": "m/year"
}
}
],
"props": {
"array_columns": [
"Name",
"Lon",
"Lat",
"Ele",
"v_Lon",
"v_Lat",
"v_Ele"
],
"ellipsoid": {
"a": 6378137,
"name": "WGS84",
"key": "EPSG::7030",
"f": 0.0033528106647474805
},
"height_sytem": null,
"frame": {
"group": "UNGROUPED",
"name": "WGS84",
"key": 302
},
"epoch": {
"value": 2002.56,
"format": "decimal"
},
"units": [
"Name",
"Lon [deg]",
"Lat [deg]",
"Ele [m]",
"v_Lon [m/year]",
"v_Lat [m/year]",
"v_Ele [m/year]"
],
"representation": "Geographic",
"geoid": null,
"projection": null
}
}
}
}
==== - Austrian ====
Der Austrian Mode ist eine Sonderform des Advanced Modes und beschreibt die in Österreich am häufigsten benötigte Umrechnung zwischen ETRS und MGI. Für die Umrechnung können entweder die flächenbasierte Transformation mit dem GIS-Grid oder die Transformation mit dem österreichweit gültigen 7-Parametern des BEVs verwendet werden.
=== - etrs2mgi ===
Wird zB benötigt um mit GNSS bestimmte Koordinaten in Mapping-Koordinaten zu transformieren.
Aufbau des requests
Die Eingabe der Parameter gibt an welche Art von Koordinaten transformiert werden. Es können nur entweder geographische oder geozentrische Koordinaten transformiert werden. Davon abhängig sind auch weitere Parameter zu setzen.
* **source\_geographic**: Ist die Eingabe geographisch muss auch "height\_in" ausgewählt werden.
* **source\_geocentric**: Auswählen von "height\_in" nicht möglich.
* **height\_in**: Gibt die Art der Eingangshöhe an. Wird in der Regel ellipsoidisch sein.
* **height\_out**: Ist die Ausgangshöhe von der Eingangshöhe unterschiedlich, werden je nach Kombination die Grid-Produkte des BEVs für die Höhentransformation verwendet.
* **use\_grid**: Gibt an wie die Lagetransformation erfolgt.
* **true**: Transformation mit GIS-Grid
* **false**: Transformation mit dem 7-Parametersatz des BEVs.
* **meridian**: Gibt an in welchem Meridian (M28/31/34) die projizierten Koordinaten ausgegeben werden sollen.
POST /api/v1.0/austrian/etrs2mgi HTTP/1.1
Host: https://transformator.bev.gv.at
Accept: application/json, text/plain, */*
Content-Type: application/json;charset=UTF-8
{
"height_in": {height},
"height_out": {height},
"use_grid": [true/false],
"meridian": {meridian},
"source_geographic": [{Geographic_Point}, {Geographic_Point}, ...],
"source_geocentric": [{Geocentric_Point}, {Geocentric_Point}, ...]
}
**Beispiel**
curl -X POST \
https://transformator.bev.gv.at/api/v1.0/austrian/etrs2mgi/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Authorization: Token YOUT_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"source_geocentric": [],
"source_geographic": [
{
"name": "T270-6",
"lon": 15.28122821,
"lat": 48.829794943,
"ele": 549.967
}
],
"source_projected": [],
"use_grid": true,
"height_in": "ellps",
"height_out": "usage",
"meridian": "GK_M34"
}'
**Ergebnis**
{
"meta": {
"request_url": "/api/v1.0/austrian/etrs2mgi/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-06-29 10:23:39.669049+00:00",
"points": 1
},
"result": {
"points": {
"type": "FeatureCollection",
"props": {
"representation": "Projected",
"array_columns": [
"Name",
"East",
"North",
"Height"
],
"units": [
"Name",
"Rechtswert [m]",
"Hochwert [m]",
"Hoehe [m]"
]
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-77236.423,
5410680.525,
549.967
]
},
"properties": {
"name": "T270-6",
"crs": "GK_M34"
}
}
]
},
"deltas": {
"type": "FeatureCollection",
"props": {
"representation": "Projected",
"array_columns": [
"Name",
"East",
"North",
"Height"
],
"units": [
"Name",
"Rechtswert [m]",
"Hochwert [m]",
"Hoehe [m]"
]
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-81.908,
-66.797,
44.67
]
},
"properties": {
"name": "T270-6",
"crs": ""
}
}
]
}
}
}
=== - mgi2etrs ===
Ist die umgekehrte Variante von "etrs2mgi". Eingangskoordinaten sind ausschließlich projizierte Koordinaten, die nach geographischen oder geozentrischen Koordinaten transformiert werden können.
Aufbau des requests
Die Eingabe der Parameter gibt an welche Art von Koordinaten transformiert werden. Es können nur entweder geographische oder geozentrische Koordinaten transformiert werden. Davon abhängig sind auch weitere Parameter zu setzen.
* **source\_projected**: Projizierte GK-Koordinaten.
* **height\_in**: Gibt die Art der Eingangshöhe an. Wird in der Regel ellipsoidisch sein.
* **height\_out**: Ist die Ausgangshöhe von der Eingangshöhe unterschiedlich, werden je nach Kombination die Grid-Produkte des BEVs für die Höhentransformation verwendet.
* **use\_grid**: Gibt an wie die Lagetransformation erfolgt.
* **true**: Transformation mit GIS-Grid
* **false**: Transformation mit dem 7-Parametersatz des BEVs.
* **meridian**: Gibt an in welchem Meridian (M28/31/34) die projizierten Koordinaten ausgegeben werden sollen.
* **target_representation**: Gibt das Zielsystem an.
* **geographic**: Ausgabe von geographischen Koordinaten.
* **geocentric**: Ausgabe von geozentrischen Koordinaten.
POST /at.gv.bev.transformator/api/v1.0/austrian/mgi2etrs/ HTTP/1.1
Host: https://transformator.bev.gv.at
Content-Type: application/json
Accept: application/json, text/plain, */*
Authorization: Token YOUR_TOKEN
{
"source_projected": [{Projected_Point}, {Projected_Point}, ... ],
"use_grid": [true/false],
"height_in": {height},
"height_out": {height},
"meridian": {meridian}
}
Beispiel:
curl -X POST \
https://transformator.bev.gv.at/at.gv.bev.transformator/api/v1.0/austrian/mgi2etrs/ \
-H 'Accept: application/json, text/plain, */*' \
-H 'Authorization: Token YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"source_projected": [
{
"name": "T270-6",
"east": -77154.396,
"north": 5410746.933,
"height": 503.77
}
],
"use_grid": true,
"height_in": "ellps",
"height_out": "usage",
"meridian": "GK_M31"
}'
Ergebnis:
{
"meta": {
"request_url": "/api/v1.0/austrian/mgi2etrs/",
"user": "anonymous",
"token": "YOUR_TOKEN",
"datetime": "2019-07-01 06:30:08.642167+00:00",
"points": 1
},
"result": {
"points": {
"type": "FeatureCollection",
"props": {
"representation": "Geographic",
"array_columns": [
"Name",
"Lon",
"Lat",
"Ele"
],
"units": [
"Name",
"Lon [deg]",
"Lat [deg]",
"Ele [m]"
]
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
12.282332881,
48.830402264,
503.77
]
},
"properties": {
"name": "T270-6",
"crs": "ETRS89"
}
}
]
}
}
}