diff --git a/README.md b/README.md index 2ee19f9..a4ddcea 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ This data is distributed as CC0. This is just a collection of the data that NTRIP providers should be already explaining in their web pages. We try to make it easy to use and contribute. +This data and software is provided "as is," without warranties or conditions of any kind, express or implied, including but not limited to the warranties of accuracy, completeness, fitness for a particular purpose, or non-infringement. +In no event shall the authors or contributors be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the use of this data or the information contained within it. + ## EPSG Many applications rely on the data provided by the [EPSG](https://epsg.org/) database. For that reason EPSG data is preferred in this catalog. diff --git a/data/World/America/USA/fprn.json b/data/World/America/USA/fprn.json index 2421d39..5080ee1 100644 --- a/data/World/America/USA/fprn.json +++ b/data/World/America/USA/fprn.json @@ -12,16 +12,7 @@ "last_update": "2024-12-09", "streams": [ { - "filter": { - "lat_lon_bboxes": [ - [ - 167.65, - 14.92, - -63.88, - 74.71 - ] - ] - }, + "filter": "all", "crss": [ { "id": "EPSG:6319", diff --git a/data/World/America/USA/utah-turn.json b/data/World/America/USA/utah-turn.json new file mode 100644 index 0000000..ebeabf5 --- /dev/null +++ b/data/World/America/USA/utah-turn.json @@ -0,0 +1,26 @@ +[ + { + "name": "TURN Utah", + "description": "The Utah Reference Network (TURN)", + "urls": [ + "http://165.239.144.5:2101", + "http://turngps.utah.gov:2101" + ], + "reference": { + "url": "https://gis.utah.gov/documentation/turn/connecting/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:6319", + "name": "NAD83(2011)", + "epoch": 2010.0 + } + ] + } + ] + } +] diff --git a/data/World/America/USA/vrsnow.us.json b/data/World/America/USA/vrsnow.us.json new file mode 100644 index 0000000..05f5a30 --- /dev/null +++ b/data/World/America/USA/vrsnow.us.json @@ -0,0 +1,31 @@ +[ + { + "name": "vrsnow.us", + "description": "Trimble VRS Now US", + "urls": [ + "http://3.134.46.149:2101", + "http://www.vrsnow.us:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "USA" + ] + }, + "crss": [ + { + "id": "EPSG:6319", + "name": "NAD83(2011)" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"NAD 83(2011)\",\"ID\":\"ISO:126\",\"EPOCH\":2010.0}}" + } + ] + } +] diff --git a/data/World/America/skylark-na.json b/data/World/America/skylark-na.json new file mode 100644 index 0000000..8a78ab8 --- /dev/null +++ b/data/World/America/skylark-na.json @@ -0,0 +1,80 @@ +[ + { + "name": "Skylark North America", + "description": "Skylark service in North America", + "urls": [ + "http://na.l1l2.skylark.swiftnav.com:2101", + "http://na.l1l5.skylark.swiftnav.com:2101", + "https://na.l1l2.skylark.swiftnav.com:2102", + "https://na.l1l5.skylark.swiftnav.com:2102" + ], + "reference": { + "url": "https://support.swiftnav.com/support/solutions/articles/44002519397-ntrip-client-configuration-for-skylark-corrections" + }, + "last_update": "2025-01-28", + "streams": [ + { + "filter": { + "mountpoints": [ + "NXRTK-NAD83-MSM5" + ] + }, + "crss": [ + { + "id": "EPSG:6319", + "name": "NAD83(2011)" + } + ], + "comments": "Skylark Nx RTK mountpoint available in contiguous United States only" + }, + { + "filter": { + "mountpoints": [ + "MSM4", + "MSM5", + "OSR", + "SSR", + "SSR-integrity", + "SSR-integrity-AES-CMAC" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Cx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "DX-MSM1" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Dx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-MSM5", + "NXRTK-RTCM31" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Nx RTK mountpoints ITRF2020" + } + ] + } +] diff --git a/data/World/Asia/JPN/jenoba.json b/data/World/Asia/JPN/jenoba.json new file mode 100644 index 0000000..d33735c --- /dev/null +++ b/data/World/Asia/JPN/jenoba.json @@ -0,0 +1,30 @@ +[ + { + "name": "jenoba", + "description": "Positional information data stream service", + "urls": [ + "http://115.125.189.203:2101", + "http://ntrip.jenoba.jp:2101" + ], + "reference": { + "url": "https://www.jenoba.jp/technical/gnss06/", + "comments": "In Japanese" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "JPN" + ] + }, + "crss": [ + { + "id": "EPSG:6667", + "name": "JGD2011" + } + ] + } + ] + } +] diff --git a/data/World/Asia/skylark-ap.json b/data/World/Asia/skylark-ap.json new file mode 100644 index 0000000..2ed0bc0 --- /dev/null +++ b/data/World/Asia/skylark-ap.json @@ -0,0 +1,66 @@ +[ + { + "name": "Skylark Asia Pacific", + "description": "Skylark service in Asia Pacific", + "urls": [ + "http://ap.l1l2.skylark.swiftnav.com:2101", + "http://ap.l1l5.skylark.swiftnav.com:2101", + "https://ap.l1l2.skylark.swiftnav.com:2102", + "https://ap.l1l5.skylark.swiftnav.com:2102" + ], + "reference": { + "url": "https://support.swiftnav.com/support/solutions/articles/44002519397-ntrip-client-configuration-for-skylark-corrections" + }, + "last_update": "2025-01-28", + "streams": [ + { + "filter": { + "mountpoints": [ + "MSM4", + "MSM5", + "OSR", + "SSR", + "SSR-integrity", + "SSR-integrity-AES-CMAC" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Cx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "DX-MSM1" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Dx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-MSM5", + "NXRTK-RTCM31" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Nx RTK mountpoints ITRF2020" + } + ] + } +] diff --git a/data/World/Europe/CHE/swipos.json b/data/World/Europe/CHE/swipos.json new file mode 100644 index 0000000..d9560a5 --- /dev/null +++ b/data/World/Europe/CHE/swipos.json @@ -0,0 +1,48 @@ +[ + { + "name": "swipos", + "description": "Service from swisstopo, CH", + "urls": [ + "http://18.195.136.180:2101", + "http://www.swipos.ch:2101" + ], + "reference": { + "url": "https://www.swisstopo.admin.ch/de/swipos-gisgeo-fuer-rtk-und-postprocessing-anwendungen" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "mountpoints": [ + "MSM_GISGEO_LV95LHN95", + "VRS_GISGEO_LV95LHN95" + ] + }, + "crss": [ + { + "id": "EPSG:4933", + "name": "CHTRS95", + "description": "Swiss realization of ETRS89" + } + ], + "comments": "Despite the mountpoint name, coordinates are geodesic: Ellipsoidal height and no projection." + }, + { + "filter": { + "mountpoints": [ + "MSM_GISGEO_LV95LN02", + "VRS_GISGEO_LV95LN02" + ] + }, + "crss": [ + { + "id": "EPSG:4933", + "name": "CHTRS95", + "description": "Swiss realization of ETRS89" + } + ], + "comments": "The geoid undulation must be applied by the receiver. ONLY HTRANS correction fixed by the VRS system on the server side." + } + ] + } +] diff --git a/data/World/Europe/DEU/sapos.json b/data/World/Europe/DEU/sapos.json new file mode 100644 index 0000000..6a3d3a5 --- /dev/null +++ b/data/World/Europe/DEU/sapos.json @@ -0,0 +1,105 @@ +[ + { + "name": "SAPOS", + "description": "SAPOS AdV", + "urls": [ + "http://www.sapos-ntrip.de:2101", + "http://sapos-ntrip.de:2101" + ], + "reference": { + "url": "https://zentrale-stelle-sapos.de/wp-content/uploads/2022/06/ZSS_zentrale-SAPOS-Ntrip-Caster-Einwahl_Jun2022.pdf", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + }, + { + "name": "SAPOS BW", + "description": "SAPOS Baden-Wuerttemberg", + "urls": [ + "http://www.sapos-bw-ntrip.de:2101", + "http://www.sapos-bw.de:2101" + ], + "reference": { + "url": "https://gpps-web.sapos-bw.de/faq.php", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + }, + { + "name": "SAPOS BY", + "description": "SAPOS Bayern", + "urls": [ + "http://195.200.70.199:2101", + "http://sapos-by-ntrip.de:2101", + "http://sapos-rtk.bayern.de:2101", + "http://www.sapos-by-ntrip.de:2101" + ], + "reference": { + "url": "https://ldbv.bayern.de/produkte/dienste/sapos.html", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + }, + { + "name": "SAPOS NRW", + "description": "SAPOS Nordrhein-Westfalen", + "urls": [ + "http://80.158.61.104:2101", + "http://www.sapos-nw-ntrip.de:2101", + "http://sapos-nw-ntrip.de:2101" + ], + "reference": { + "url": "https://www.bezreg-koeln.nrw.de/geobasis-nrw/produkte-und-dienste/raumbezug/satellitenpositionierungsdienst-sapos", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + } +] diff --git a/data/World/Europe/DEU/vrsnow-de.json b/data/World/Europe/DEU/vrsnow-de.json index 2d15cf2..91e5802 100644 --- a/data/World/Europe/DEU/vrsnow-de.json +++ b/data/World/Europe/DEU/vrsnow-de.json @@ -1,7 +1,7 @@ [ { "name": "vrsnow.de", - "description": "unknown", + "description": "Trimble VRS Now (Germany)", "urls": [ "http://vrsnow.de:2101", "http://www.vrsnow.de:2101", diff --git a/data/World/Europe/FRA/vrsnow-fr.json b/data/World/Europe/FRA/vrsnow-fr.json new file mode 100644 index 0000000..abd368b --- /dev/null +++ b/data/World/Europe/FRA/vrsnow-fr.json @@ -0,0 +1,31 @@ +[ + { + "name": "vrsnow.fr", + "description": "Trimble VRS Now FR", + "urls": [ + "http://155.63.90.137:2101", + "http://vrsnow.fr:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "FRA" + ] + }, + "crss": [ + { + "id": "EPSG:9781", + "name": "RGF93 v2b" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"RGF93v2b\",\"ID\":\"ISO:178\",\"EPOCH\":2019.0}}" + } + ] + } +] diff --git a/data/World/Europe/GBR/vrsnow-co-uk.json b/data/World/Europe/GBR/vrsnow-co-uk.json new file mode 100644 index 0000000..6941ca1 --- /dev/null +++ b/data/World/Europe/GBR/vrsnow-co-uk.json @@ -0,0 +1,41 @@ +[ + { + "name": "vrsnow.co.uk", + "description": "Trimble VRS Now UK", + "urls": [ + "http://155.63.90.119:2101", + "http://www.vrsnow.co.uk:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string. Mountpoints over OSTN02 are not included." + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "mountpoints": [ + "15_Station_KIRW", + "15_Station_LERW", + "15_TVN_CMR_PLUS", + "15_TVN_CMR_X_GPS_GLO", + "15_TVN_DGPS", + "15_TVN_RTCM_23", + "15_TVN_RTCM_31", + "15_TVN_RTCM_31_GPS_Only", + "15_TVN_CMR_X", + "15_TVN_RTCM_32" + ] + }, + "crss": [ + { + "id": "EPSG:7929", + "name": "ETRF97", + "epoch": 2009.756 + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"ETRF97\",\"ID\":\"ISO:132\",\"EPOCH\":2009.756}}." + } + ] + } +] diff --git a/data/World/Europe/LUX/spslux.json b/data/World/Europe/LUX/spslux.json new file mode 100644 index 0000000..a0916d9 --- /dev/null +++ b/data/World/Europe/LUX/spslux.json @@ -0,0 +1,25 @@ +[ + { + "name": "SPSLUX", + "description": "Satellite Positioning System Luxembourg", + "urls": [ + "http://stream.spslux.lu:5005" + ], + "reference": { + "url": "https://act.public.lu/fr/gps-reseaux/spslux1/spsluxgeodeticdatum.html" + }, + "last_update": "2025-01-13", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:7931", + "name": "ETRF2000", + "epoch": 2020.82 + } + ] + } + ] + } +] diff --git a/data/World/Europe/SWE/swepos.json b/data/World/Europe/SWE/swepos.json new file mode 100644 index 0000000..4de523f --- /dev/null +++ b/data/World/Europe/SWE/swepos.json @@ -0,0 +1,25 @@ +[ + { + "name": "SWEPOS", + "description": "SWEPOS", + "urls": [ + "http://nrtk-swepos.lm.se:80", + "http://nrtk-swepos.lm.se:8500" + ], + "reference": { + "url": "https://www.lantmateriet.se/sv/geodata/gps-geodesi-och-swepos/swepos/om-swepos/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:4977", + "name": "SWEREF99" + } + ] + } + ] + } +] diff --git a/data/World/Europe/skylark-eu.json b/data/World/Europe/skylark-eu.json new file mode 100644 index 0000000..b7dc2e3 --- /dev/null +++ b/data/World/Europe/skylark-eu.json @@ -0,0 +1,95 @@ +[ + { + "name": "Skylark Europe", + "description": "Skylark service in Europe", + "urls": [ + "http://eu.l1l2.skylark.swiftnav.com:2101", + "http://eu.l1l5.skylark.swiftnav.com:2101", + "https://eu.l1l2.skylark.swiftnav.com:2102", + "https://eu.l1l5.skylark.swiftnav.com:2102" + ], + "reference": { + "url": "https://support.swiftnav.com/support/solutions/articles/44002519397-ntrip-client-configuration-for-skylark-corrections" + }, + "last_update": "2025-01-28", + "streams": [ + { + "filter": { + "mountpoints": [ + "NXRTK-DREF91-MSM5" + ] + }, + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "Germany" + } + ], + "comments": "Skylark Nx RTK mountpoint for Germany" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-ETRF2000-MSM5" + ] + }, + "crss": [ + { + "id": "EPSG:7931", + "name": "ETRF2000" + } + ], + "comments": "Skylark Nx RTK mountpoint for Europe" + }, + { + "filter": { + "mountpoints": [ + "MSM4", + "MSM5", + "OSR", + "SSR", + "SSR-integrity", + "SSR-integrity-AES-CMAC" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Cx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "DX-MSM1" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Dx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-MSM5", + "NXRTK-RTCM31" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Nx RTK mountpoints ITRF2020" + } + ] + } +] diff --git a/data/World/Oceania/AUS/auscors.json b/data/World/Oceania/AUS/auscors.json new file mode 100644 index 0000000..ca34f54 --- /dev/null +++ b/data/World/Oceania/AUS/auscors.json @@ -0,0 +1,31 @@ +[ + { + "name": "AUSCORS", + "description": "Geoscience Australia AUSCORS NTRIP Broadcaster", + "urls": [ + "https://ntrip.data.gnss.ga.gov.au:443", + "http://ntrip.data.gnss.ga.gov.au:2101" + ], + "reference": { + "url": "https://gnss.ga.gov.au/stream", + "comments": "Also provides base stations outside of Australia, but the precise CRS is not known" + }, + "last_update": "2025-01-13", + "streams": [ + { + "filter": { + "countries": [ + "AUS" + ] + }, + "crss": [ + { + "id": "EPSG:7843", + "name": "GDA2020" + } + ], + "comments": "Broadcast Coordinates: Stations within Australia - GDA2020" + } + ] + } +] diff --git a/data/World/Oceania/AUS/vrsnow-com-au.json b/data/World/Oceania/AUS/vrsnow-com-au.json index fe51488..b7fbe39 100644 --- a/data/World/Oceania/AUS/vrsnow-com-au.json +++ b/data/World/Oceania/AUS/vrsnow-com-au.json @@ -1 +1,65 @@ -[] +[ + { + "name": "vrsnow.com.au", + "description": "Trimble VRS Now AU", + "urls": [ + "http://13.239.92.67:2101", + "http://vrsnow.com.au:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "mountpoints": [ + "TVN_NEAREST_CMR_PLUS", + "TVN_NEAREST_CMR_X", + "TVN_NEAREST_RTCM_31", + "TVN_CMR_X", + "TVN_RTCM_31", + "TVN_DGPS", + "TVN_NEAREST_DGPS", + "TVN_RTCM_32", + "TVN_CMR_X_GPS_GLO", + "TVN_CMR_PLUS", + "TVN_NEAREST_RTCM_32" + ] + }, + "crss": [ + { + "id": "EPSG:4939", + "name": "GDA94" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"GDA94\",\"ID\":\"ISO:182\",\"EPOCH\":1994.0}}" + }, + { + "filter": { + "mountpoints": [ + "20_TVN_CMR_PLUS", + "20_TVN_CMR_X", + "20_TVN_CMR_X_GPS_GLO", + "20_TVN_DGPS", + "20_TVN_NEAREST_CMR_PLUS", + "20_TVN_NEAREST_CMR_X", + "20_TVN_NEAREST_DGPS", + "20_TVN_NEAREST_RTCM_31", + "20_TVN_RTCM_31", + "20_TVN_RTCM_32", + "20_TVN_NEAREST_RTCM_32" + ] + }, + "crss": [ + { + "id": "EPSG:7843", + "name": "GDA2020" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"GDA2020\",\"ID\":\"ISO:186\",\"EPOCH\":2020.0}}" + } + ] + } +] diff --git a/data/World/Oceania/NZL/nzgd2000-vrsnow-co-nz.json b/data/World/Oceania/NZL/nzgd2000-vrsnow-co-nz.json new file mode 100644 index 0000000..506f31e --- /dev/null +++ b/data/World/Oceania/NZL/nzgd2000-vrsnow-co-nz.json @@ -0,0 +1,31 @@ +[ + { + "name": "nzgd2000.vrsnow.co.nz", + "description": "Trimble VRS Now NZGD2000", + "urls": [ + "http://54.66.207.234:2101", + "http://nzgd2000.vrsnow.co.nz:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "NZL" + ] + }, + "crss": [ + { + "id": "EPSG:4959", + "name": "NZGD2000" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"NZGD2000\",\"ID\":\"ISO:199\",\"EPOCH\":2000.0}}" + } + ] + } +] diff --git a/data/World/Oceania/NZL/vrsnow-co-nz.json b/data/World/Oceania/NZL/vrsnow-co-nz.json index fe51488..c97451b 100644 --- a/data/World/Oceania/NZL/vrsnow-co-nz.json +++ b/data/World/Oceania/NZL/vrsnow-co-nz.json @@ -1 +1,33 @@ -[] +[ + { + "name": "vrsnow.co.nz", + "description": "Trimble VRS Now NZ", + "urls": [ + "http://13.239.179.74:2101", + "http://www.vrsnow.co.nz:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "NZL" + ] + }, + "crss": [ + { + "id": "EPSG:7912", + "name": "ITRF2014", + "epoch": 2020, + "description": "ITRF2014 epoch 2020" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"ITRF2014\",\"ID\":\"ISO:175\",\"EPOCH\":2020.0}}" + } + ] + } +] diff --git a/data/World/pointonenav.json b/data/World/pointonenav.json new file mode 100644 index 0000000..a1d0cec --- /dev/null +++ b/data/World/pointonenav.json @@ -0,0 +1,149 @@ +[ + { + "name": "Point One Nav", + "description": "Point One Navigation world service", + "urls": [ + "http://truertk.pointonenav.com:2101", + "http://virtualrtk.pointonenav.com:2101", + "http://truertk-us.pointonenav.com:2101", + "http://truertk-eu.pointonenav.com:2101", + "http://truertk-apac.pointonenav.com:2101", + "https://truertk.pointonenav.com:2102", + "https://virtualrtk.pointonenav.com:2102", + "https://truertk-us.pointonenav.com:2102", + "https://truertk-eu.pointonenav.com:2102", + "https://truertk-apac.pointonenav.com:2102" + ], + "reference": { + "url": "https://support.pointonenav.com/connect-to-polaris-rtk" + }, + "last_update": "2025-01-29", + "streams": [ + { + "filter": { + "mountpoints": [ + "POLARIS" + ] + }, + "crss": [ + { + "id": "EPSG:7912", + "name": "ITRF2014", + "epoch": "now" + } + ] + }, + { + "filter": { + "mountpoints": [ + "POLARIS_LOCAL" + ] + }, + "crss": [ + { + "id": "EPSG:6667", + "name": "JGD2011", + "rover_countries": [ + "JPN" + ], + "description": "Japan" + }, + { + "id": "EPSG:4927", + "name": "KGD2002", + "rover_countries": [ + "KOR" + ], + "description": "South Korea" + }, + { + "id": "EPSG:7929", + "name": "ETRF97", + "epoch": 2009.756, + "rover_countries": [ + "GBR" + ], + "description": "United Kingdom" + }, + { + "id": "EPSG:7931", + "name": "ETRF2000", + "epoch": 2010.5, + "rover_countries": [ + "NLD" + ], + "description": "Netherlands" + }, + { + "id": "EPSG:7843", + "name": "GDA2020", + "rover_countries": [ + "AUS" + ], + "description": "Australia" + }, + { + "id": "EPSG:4959", + "name": "NZGD2000", + "rover_countries": [ + "NZL" + ], + "description": "New Zealand" + }, + { + "id": "EPSG:8254", + "name": "NAD83(CSRS)v7", + "rover_countries": [ + "CAN" + ], + "description": "Canada" + }, + { + "id": "EPSG:6324", + "name": "NAD83(MA11)", + "rover_bbox": [ + 129.48, + 1.64, + 149.55, + 23.9 + ], + "description": "Guam" + }, + { + "id": "EPSG:6321", + "name": "NAD83(PA11)", + "rover_bbox": [ + 157.47, + -17.56, + -151.27, + 31.8 + ], + "description": "Hawaii" + }, + { + "id": "EPSG:6319", + "name": "NAD83(2011)", + "epoch": 2010.0, + "rover_countries": [ + "USA" + ], + "description": "Continental USA, after Guam and Hawaii" + }, + { + "id": "EPSG:7931", + "name": "ETRF2000", + "epoch": 2010.0, + "rover_bbox": [ + -12, + 35, + 36, + 72 + ], + "description": "Continental Europe" + } + ], + "comments": "Polaris_local per region" + } + ] + } +] diff --git a/dist/ntrip-catalog.json b/dist/ntrip-catalog.json index ac38844..4ec9091 100644 --- a/dist/ntrip-catalog.json +++ b/dist/ntrip-catalog.json @@ -3,6 +3,35 @@ "release": 0, "comment": "This file has been automatically generated by a script. Update the 'data' folder if any change is needed.", "entries": [ + { + "name": "AUSCORS", + "description": "Geoscience Australia AUSCORS NTRIP Broadcaster", + "urls": [ + "https://ntrip.data.gnss.ga.gov.au:443", + "http://ntrip.data.gnss.ga.gov.au:2101" + ], + "reference": { + "url": "https://gnss.ga.gov.au/stream", + "comments": "Also provides base stations outside of Australia, but the precise CRS is not known" + }, + "last_update": "2025-01-13", + "streams": [ + { + "filter": { + "countries": [ + "AUS" + ] + }, + "crss": [ + { + "id": "EPSG:7843", + "name": "GDA2020" + } + ], + "comments": "Broadcast Coordinates: Stations within Australia - GDA2020" + } + ] + }, { "name": "FPRN", "description": "Florida Primary Reference Network", @@ -16,16 +45,7 @@ "last_update": "2024-12-09", "streams": [ { - "filter": { - "lat_lon_bboxes": [ - [ - 167.65, - 14.92, - -63.88, - 74.71 - ] - ] - }, + "filter": "all", "crss": [ { "id": "EPSG:6319", @@ -85,64 +105,619 @@ "description": "Canary Islands" } ], - "description": "Network mountpoins", - "comments": "Canary Islands are not in the European tectonic plate" + "description": "Network mountpoins", + "comments": "Canary Islands are not in the European tectonic plate" + } + ] + }, + { + "name": "IGN ES single base stations", + "description": "Servicio de Posicionamiento en Tiempo Real - Estaciones", + "urls": [ + "http://192.148.213.42:2102", + "http://ergnss-tr.ign.es:2102" + ], + "reference": { + "url": "https://www.ign.es/web/gds-gnss-tiempo-real", + "comments": "Data provided directly by IGN" + }, + "last_update": "2024-12-09", + "streams": [ + { + "filter": { + "lat_lon_bboxes": [ + [ + -16.1, + 33.26, + 38.01, + 84.73 + ] + ] + }, + "crss": [ + { + "id": "EPSG:7931", + "name": "ETRF2000", + "description": "Peninsula and Balearic Islands" + } + ], + "description": "Single base stations" + }, + { + "filter": { + "lat_lon_bboxes": [ + [ + -21.93, + 24.6, + -11.75, + 32.76 + ] + ] + }, + "crss": [ + { + "id": "EPSG:4080", + "name": "REGCAN95", + "description": "Canary Islands" + } + ], + "description": "Single base stations", + "comments": "Canary Islands are not in the European tectonic plate" + } + ] + }, + { + "name": "Point One Nav", + "description": "Point One Navigation world service", + "urls": [ + "http://truertk.pointonenav.com:2101", + "http://virtualrtk.pointonenav.com:2101", + "http://truertk-us.pointonenav.com:2101", + "http://truertk-eu.pointonenav.com:2101", + "http://truertk-apac.pointonenav.com:2101", + "https://truertk.pointonenav.com:2102", + "https://virtualrtk.pointonenav.com:2102", + "https://truertk-us.pointonenav.com:2102", + "https://truertk-eu.pointonenav.com:2102", + "https://truertk-apac.pointonenav.com:2102" + ], + "reference": { + "url": "https://support.pointonenav.com/connect-to-polaris-rtk" + }, + "last_update": "2025-01-29", + "streams": [ + { + "filter": { + "mountpoints": [ + "POLARIS" + ] + }, + "crss": [ + { + "id": "EPSG:7912", + "name": "ITRF2014", + "epoch": "now" + } + ] + }, + { + "filter": { + "mountpoints": [ + "POLARIS_LOCAL" + ] + }, + "crss": [ + { + "id": "EPSG:6667", + "name": "JGD2011", + "rover_countries": [ + "JPN" + ], + "description": "Japan" + }, + { + "id": "EPSG:4927", + "name": "KGD2002", + "rover_countries": [ + "KOR" + ], + "description": "South Korea" + }, + { + "id": "EPSG:7929", + "name": "ETRF97", + "epoch": 2009.756, + "rover_countries": [ + "GBR" + ], + "description": "United Kingdom" + }, + { + "id": "EPSG:7931", + "name": "ETRF2000", + "epoch": 2010.5, + "rover_countries": [ + "NLD" + ], + "description": "Netherlands" + }, + { + "id": "EPSG:7843", + "name": "GDA2020", + "rover_countries": [ + "AUS" + ], + "description": "Australia" + }, + { + "id": "EPSG:4959", + "name": "NZGD2000", + "rover_countries": [ + "NZL" + ], + "description": "New Zealand" + }, + { + "id": "EPSG:8254", + "name": "NAD83(CSRS)v7", + "rover_countries": [ + "CAN" + ], + "description": "Canada" + }, + { + "id": "EPSG:6324", + "name": "NAD83(MA11)", + "rover_bbox": [ + 129.48, + 1.64, + 149.55, + 23.9 + ], + "description": "Guam" + }, + { + "id": "EPSG:6321", + "name": "NAD83(PA11)", + "rover_bbox": [ + 157.47, + -17.56, + -151.27, + 31.8 + ], + "description": "Hawaii" + }, + { + "id": "EPSG:6319", + "name": "NAD83(2011)", + "epoch": 2010.0, + "rover_countries": [ + "USA" + ], + "description": "Continental USA, after Guam and Hawaii" + }, + { + "id": "EPSG:7931", + "name": "ETRF2000", + "epoch": 2010.0, + "rover_bbox": [ + -12, + 35, + 36, + 72 + ], + "description": "Continental Europe" + } + ], + "comments": "Polaris_local per region" + } + ] + }, + { + "name": "SAPOS", + "description": "SAPOS AdV", + "urls": [ + "http://www.sapos-ntrip.de:2101", + "http://sapos-ntrip.de:2101" + ], + "reference": { + "url": "https://zentrale-stelle-sapos.de/wp-content/uploads/2022/06/ZSS_zentrale-SAPOS-Ntrip-Caster-Einwahl_Jun2022.pdf", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + }, + { + "name": "SAPOS BW", + "description": "SAPOS Baden-Wuerttemberg", + "urls": [ + "http://www.sapos-bw-ntrip.de:2101", + "http://www.sapos-bw.de:2101" + ], + "reference": { + "url": "https://gpps-web.sapos-bw.de/faq.php", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + }, + { + "name": "SAPOS BY", + "description": "SAPOS Bayern", + "urls": [ + "http://195.200.70.199:2101", + "http://sapos-by-ntrip.de:2101", + "http://sapos-rtk.bayern.de:2101", + "http://www.sapos-by-ntrip.de:2101" + ], + "reference": { + "url": "https://ldbv.bayern.de/produkte/dienste/sapos.html", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + }, + { + "name": "SAPOS NRW", + "description": "SAPOS Nordrhein-Westfalen", + "urls": [ + "http://80.158.61.104:2101", + "http://www.sapos-nw-ntrip.de:2101", + "http://sapos-nw-ntrip.de:2101" + ], + "reference": { + "url": "https://www.bezreg-koeln.nrw.de/geobasis-nrw/produkte-und-dienste/raumbezug/satellitenpositionierungsdienst-sapos", + "comments": "https://sapos.de/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "German realization of ETRS89" + } + ] + } + ] + }, + { + "name": "SPSLUX", + "description": "Satellite Positioning System Luxembourg", + "urls": [ + "http://stream.spslux.lu:5005" + ], + "reference": { + "url": "https://act.public.lu/fr/gps-reseaux/spslux1/spsluxgeodeticdatum.html" + }, + "last_update": "2025-01-13", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:7931", + "name": "ETRF2000", + "epoch": 2020.82 + } + ] + } + ] + }, + { + "name": "SWEPOS", + "description": "SWEPOS", + "urls": [ + "http://nrtk-swepos.lm.se:80", + "http://nrtk-swepos.lm.se:8500" + ], + "reference": { + "url": "https://www.lantmateriet.se/sv/geodata/gps-geodesi-och-swepos/swepos/om-swepos/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:4977", + "name": "SWEREF99" + } + ] + } + ] + }, + { + "name": "Skylark Asia Pacific", + "description": "Skylark service in Asia Pacific", + "urls": [ + "http://ap.l1l2.skylark.swiftnav.com:2101", + "http://ap.l1l5.skylark.swiftnav.com:2101", + "https://ap.l1l2.skylark.swiftnav.com:2102", + "https://ap.l1l5.skylark.swiftnav.com:2102" + ], + "reference": { + "url": "https://support.swiftnav.com/support/solutions/articles/44002519397-ntrip-client-configuration-for-skylark-corrections" + }, + "last_update": "2025-01-28", + "streams": [ + { + "filter": { + "mountpoints": [ + "MSM4", + "MSM5", + "OSR", + "SSR", + "SSR-integrity", + "SSR-integrity-AES-CMAC" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Cx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "DX-MSM1" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Dx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-MSM5", + "NXRTK-RTCM31" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Nx RTK mountpoints ITRF2020" + } + ] + }, + { + "name": "Skylark Europe", + "description": "Skylark service in Europe", + "urls": [ + "http://eu.l1l2.skylark.swiftnav.com:2101", + "http://eu.l1l5.skylark.swiftnav.com:2101", + "https://eu.l1l2.skylark.swiftnav.com:2102", + "https://eu.l1l5.skylark.swiftnav.com:2102" + ], + "reference": { + "url": "https://support.swiftnav.com/support/solutions/articles/44002519397-ntrip-client-configuration-for-skylark-corrections" + }, + "last_update": "2025-01-28", + "streams": [ + { + "filter": { + "mountpoints": [ + "NXRTK-DREF91-MSM5" + ] + }, + "crss": [ + { + "id": "EPSG:10283", + "name": "ETRS89/DREF91/2016", + "description": "Germany" + } + ], + "comments": "Skylark Nx RTK mountpoint for Germany" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-ETRF2000-MSM5" + ] + }, + "crss": [ + { + "id": "EPSG:7931", + "name": "ETRF2000" + } + ], + "comments": "Skylark Nx RTK mountpoint for Europe" + }, + { + "filter": { + "mountpoints": [ + "MSM4", + "MSM5", + "OSR", + "SSR", + "SSR-integrity", + "SSR-integrity-AES-CMAC" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Cx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "DX-MSM1" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Dx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-MSM5", + "NXRTK-RTCM31" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Nx RTK mountpoints ITRF2020" } ] }, { - "name": "IGN ES single base stations", - "description": "Servicio de Posicionamiento en Tiempo Real - Estaciones", + "name": "Skylark North America", + "description": "Skylark service in North America", "urls": [ - "http://192.148.213.42:2102", - "http://ergnss-tr.ign.es:2102" + "http://na.l1l2.skylark.swiftnav.com:2101", + "http://na.l1l5.skylark.swiftnav.com:2101", + "https://na.l1l2.skylark.swiftnav.com:2102", + "https://na.l1l5.skylark.swiftnav.com:2102" ], "reference": { - "url": "https://www.ign.es/web/gds-gnss-tiempo-real", - "comments": "Data provided directly by IGN" + "url": "https://support.swiftnav.com/support/solutions/articles/44002519397-ntrip-client-configuration-for-skylark-corrections" }, - "last_update": "2024-12-09", + "last_update": "2025-01-28", "streams": [ { "filter": { - "lat_lon_bboxes": [ - [ - -16.1, - 33.26, - 38.01, - 84.73 - ] + "mountpoints": [ + "NXRTK-NAD83-MSM5" ] }, "crss": [ { - "id": "EPSG:7931", - "name": "ETRF2000", - "description": "Peninsula and Balearic Islands" + "id": "EPSG:6319", + "name": "NAD83(2011)" } ], - "description": "Single base stations" + "comments": "Skylark Nx RTK mountpoint available in contiguous United States only" }, { "filter": { - "lat_lon_bboxes": [ - [ - -21.93, - 24.6, - -11.75, - 32.76 - ] + "mountpoints": [ + "MSM4", + "MSM5", + "OSR", + "SSR", + "SSR-integrity", + "SSR-integrity-AES-CMAC" ] }, "crss": [ { - "id": "EPSG:4080", - "name": "REGCAN95", - "description": "Canary Islands" + "id": "EPSG:9989", + "name": "ITRF2020" } ], - "description": "Single base stations", - "comments": "Canary Islands are not in the European tectonic plate" + "comments": "Skylark Cx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "DX-MSM1" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Dx mountpoints ITRF2020" + }, + { + "filter": { + "mountpoints": [ + "NXRTK-MSM5", + "NXRTK-RTCM31" + ] + }, + "crss": [ + { + "id": "EPSG:9989", + "name": "ITRF2020" + } + ], + "comments": "Skylark Nx RTK mountpoints ITRF2020" + } + ] + }, + { + "name": "TURN Utah", + "description": "The Utah Reference Network (TURN)", + "urls": [ + "http://165.239.144.5:2101", + "http://turngps.utah.gov:2101" + ], + "reference": { + "url": "https://gis.utah.gov/documentation/turn/connecting/" + }, + "last_update": "2025-01-27", + "streams": [ + { + "filter": "all", + "crss": [ + { + "id": "EPSG:6319", + "name": "NAD83(2011)", + "epoch": 2010.0 + } + ] } ] }, @@ -391,9 +966,245 @@ } ] }, + { + "name": "jenoba", + "description": "Positional information data stream service", + "urls": [ + "http://115.125.189.203:2101", + "http://ntrip.jenoba.jp:2101" + ], + "reference": { + "url": "https://www.jenoba.jp/technical/gnss06/", + "comments": "In Japanese" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "JPN" + ] + }, + "crss": [ + { + "id": "EPSG:6667", + "name": "JGD2011" + } + ] + } + ] + }, + { + "name": "nzgd2000.vrsnow.co.nz", + "description": "Trimble VRS Now NZGD2000", + "urls": [ + "http://54.66.207.234:2101", + "http://nzgd2000.vrsnow.co.nz:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "NZL" + ] + }, + "crss": [ + { + "id": "EPSG:4959", + "name": "NZGD2000" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"NZGD2000\",\"ID\":\"ISO:199\",\"EPOCH\":2000.0}}" + } + ] + }, + { + "name": "swipos", + "description": "Service from swisstopo, CH", + "urls": [ + "http://18.195.136.180:2101", + "http://www.swipos.ch:2101" + ], + "reference": { + "url": "https://www.swisstopo.admin.ch/de/swipos-gisgeo-fuer-rtk-und-postprocessing-anwendungen" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "mountpoints": [ + "MSM_GISGEO_LV95LHN95", + "VRS_GISGEO_LV95LHN95" + ] + }, + "crss": [ + { + "id": "EPSG:4933", + "name": "CHTRS95", + "description": "Swiss realization of ETRS89" + } + ], + "comments": "Despite the mountpoint name, coordinates are geodesic: Ellipsoidal height and no projection." + }, + { + "filter": { + "mountpoints": [ + "MSM_GISGEO_LV95LN02", + "VRS_GISGEO_LV95LN02" + ] + }, + "crss": [ + { + "id": "EPSG:4933", + "name": "CHTRS95", + "description": "Swiss realization of ETRS89" + } + ], + "comments": "The geoid undulation must be applied by the receiver. ONLY HTRANS correction fixed by the VRS system on the server side." + } + ] + }, + { + "name": "vrsnow.co.nz", + "description": "Trimble VRS Now NZ", + "urls": [ + "http://13.239.179.74:2101", + "http://www.vrsnow.co.nz:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "NZL" + ] + }, + "crss": [ + { + "id": "EPSG:7912", + "name": "ITRF2014", + "epoch": 2020, + "description": "ITRF2014 epoch 2020" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"ITRF2014\",\"ID\":\"ISO:175\",\"EPOCH\":2020.0}}" + } + ] + }, + { + "name": "vrsnow.co.uk", + "description": "Trimble VRS Now UK", + "urls": [ + "http://155.63.90.119:2101", + "http://www.vrsnow.co.uk:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string. Mountpoints over OSTN02 are not included." + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "mountpoints": [ + "15_Station_KIRW", + "15_Station_LERW", + "15_TVN_CMR_PLUS", + "15_TVN_CMR_X_GPS_GLO", + "15_TVN_DGPS", + "15_TVN_RTCM_23", + "15_TVN_RTCM_31", + "15_TVN_RTCM_31_GPS_Only", + "15_TVN_CMR_X", + "15_TVN_RTCM_32" + ] + }, + "crss": [ + { + "id": "EPSG:7929", + "name": "ETRF97", + "epoch": 2009.756 + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"ETRF97\",\"ID\":\"ISO:132\",\"EPOCH\":2009.756}}." + } + ] + }, + { + "name": "vrsnow.com.au", + "description": "Trimble VRS Now AU", + "urls": [ + "http://13.239.92.67:2101", + "http://vrsnow.com.au:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "mountpoints": [ + "TVN_NEAREST_CMR_PLUS", + "TVN_NEAREST_CMR_X", + "TVN_NEAREST_RTCM_31", + "TVN_CMR_X", + "TVN_RTCM_31", + "TVN_DGPS", + "TVN_NEAREST_DGPS", + "TVN_RTCM_32", + "TVN_CMR_X_GPS_GLO", + "TVN_CMR_PLUS", + "TVN_NEAREST_RTCM_32" + ] + }, + "crss": [ + { + "id": "EPSG:4939", + "name": "GDA94" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"GDA94\",\"ID\":\"ISO:182\",\"EPOCH\":1994.0}}" + }, + { + "filter": { + "mountpoints": [ + "20_TVN_CMR_PLUS", + "20_TVN_CMR_X", + "20_TVN_CMR_X_GPS_GLO", + "20_TVN_DGPS", + "20_TVN_NEAREST_CMR_PLUS", + "20_TVN_NEAREST_CMR_X", + "20_TVN_NEAREST_DGPS", + "20_TVN_NEAREST_RTCM_31", + "20_TVN_RTCM_31", + "20_TVN_RTCM_32", + "20_TVN_NEAREST_RTCM_32" + ] + }, + "crss": [ + { + "id": "EPSG:7843", + "name": "GDA2020" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"GDA2020\",\"ID\":\"ISO:186\",\"EPOCH\":2020.0}}" + } + ] + }, { "name": "vrsnow.de", - "description": "unknown", + "description": "Trimble VRS Now (Germany)", "urls": [ "http://vrsnow.de:2101", "http://www.vrsnow.de:2101", @@ -424,6 +1235,64 @@ "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"ETRS89-DREF91(R16)\",\"ID\":\"TRIMBLE:184\",\"EPOCH\":2016.0}}" } ] + }, + { + "name": "vrsnow.fr", + "description": "Trimble VRS Now FR", + "urls": [ + "http://155.63.90.137:2101", + "http://vrsnow.fr:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "FRA" + ] + }, + "crss": [ + { + "id": "EPSG:9781", + "name": "RGF93 v2b" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"RGF93v2b\",\"ID\":\"ISO:178\",\"EPOCH\":2019.0}}" + } + ] + }, + { + "name": "vrsnow.us", + "description": "Trimble VRS Now US", + "urls": [ + "http://3.134.46.149:2101", + "http://www.vrsnow.us:2101" + ], + "reference": { + "url": "https://geospatial.trimble.com/en/resources/blog/coordinate-system-enhancements-for-centerpoint-rtx-corrections", + "comments": "CRS described in the STR string" + }, + "last_update": "2025-01-10", + "streams": [ + { + "filter": { + "countries": [ + "USA" + ] + }, + "crss": [ + { + "id": "EPSG:6319", + "name": "NAD83(2011)" + } + ], + "comments": "CRS described in the STR string {\"REF\":{\"NAME\":\"NAD 83(2011)\",\"ID\":\"ISO:126\",\"EPOCH\":2010.0}}" + } + ] } ] } diff --git a/schemas/v0.1/entries.schema.json b/schemas/v0.1/entries.schema.json index 2f9802d..2e66667 100644 --- a/schemas/v0.1/entries.schema.json +++ b/schemas/v0.1/entries.schema.json @@ -52,7 +52,6 @@ "description": "Item to match a stream from the sourcetable with a CRS.", "properties": { "filter": { - "type": "object", "description": "Criterion to filter in the sourcetable", "oneOf": [ { @@ -63,6 +62,13 @@ }, { "$ref": "#/$defs/countries_def" + }, + { + "type": "string", + "enum": [ + "all" + ], + "description": "Matches all the streams. Use with caution." } ] }, @@ -177,7 +183,7 @@ "items": { "type": "string" }, - "description": "Matches the 'Mountpoint' field in the Stream", + "description": "Matches the 'Mountpoint' field in the stream", "additionalProperties": false } }, @@ -211,7 +217,7 @@ "items": { "type": "string" }, - "description": "Matches the 'Country Code' field in the Stream" + "description": "Matches the 'Country Code' field in the stream" } }, "required": [ diff --git a/scripts/query.py b/scripts/query.py index 7452581..5f9b6af 100755 --- a/scripts/query.py +++ b/scripts/query.py @@ -86,6 +86,32 @@ def point_in_bbox(point_lat, point_lon, bbox): return point_lon >= bbox[0] and point_lon <= bbox[2] +def _crss_from_stream(stream, mountpoint, url, server_streams): + crss = stream["crss"] + stream_filter = stream["filter"] + if stream_filter == "all": + return crss + elif "mountpoints" in stream_filter: + if mountpoint in stream_filter["mountpoints"]: + return crss + else: + if not server_streams: + server_streams += get_streams_from_server(url) + line = get_str_line_from_server(server_streams, mountpoint) + if not line or len(line) < 10: + return None + country = line[8] + base_lat = float(line[9]) + base_lon = normalize_lon(float(line[10])) + + if country in stream_filter.get("countries", []): + return crss + + for bbox in stream_filter.get("lat_lon_bboxes", []): + if point_in_bbox(base_lat, base_lon, bbox): + return crss + + def filter_crs( json_entry, url, @@ -107,33 +133,10 @@ def filter_by_rover(crss): return crs return None - def crss_from_stream(stream, server_streams): - crss = stream["crss"] - stream_filter = stream["filter"] - if "mountpoints" in stream_filter: - if mountpoint in stream_filter["mountpoints"]: - return crss - else: - if not server_streams: - server_streams += get_streams_from_server(url) - line = get_str_line_from_server(server_streams, mountpoint) - if not line or len(line) < 10: - return None - country = line[8] - base_lat = float(line[9]) - base_lon = normalize_lon(float(line[10])) - - if country in stream_filter.get("countries", []): - return crss - - for bbox in stream_filter.get("lat_lon_bboxes", []): - if point_in_bbox(base_lat, base_lon, bbox): - return crss - server_streams = [*sourcetable_lines_splitted] if sourcetable_lines_splitted else [] for stream in json_entry["streams"]: - crss = crss_from_stream(stream, server_streams) + crss = _crss_from_stream(stream, mountpoint, url, server_streams) if crss: crs = filter_by_rover(crss) if crs: diff --git a/tests/test_codes_consistency.py b/tests/test_codes_consistency.py new file mode 100644 index 0000000..67e8fe8 --- /dev/null +++ b/tests/test_codes_consistency.py @@ -0,0 +1,45 @@ +import json +import urllib.error +import urllib.request + +import pytest + +from scripts import query as ntrip_query + +server_path = "scripts.query.get_streams_from_server" + + +def download_crslist(): + with urllib.request.urlopen("https://spatialreference.org/crslist.json") as f: + crslist = json.load(f) + return crslist + + +@pytest.mark.xfail(raises=urllib.error.HTTPError) +def test_codes(): + crslist = download_crslist() # this may fail because it is an http request. + + def testit(id, name): + id_exists = False + for crs in crslist: + if crs["auth_name"] + ":" + crs["code"] == id: + assert crs["name"] == name + + # when systems with only 2D are added, change this test + assert crs["type"] == "GEOGRAPHIC_3D_CRS" + + id_exists = True + break + assert id_exists + + json_data = ntrip_query.load_json() + counter = 0 + for entry in json_data["entries"]: + for stream in entry["streams"]: + for crs in stream["crss"]: + if crs["id"] and crs["name"]: + counter += 1 + print(crs["id"], crs["name"]) + testit(crs["id"], crs["name"]) + + assert counter > 30 # We are testing something!