From 778d8318efbaff165a8cdaef2763f4f744d1eb7b Mon Sep 17 00:00:00 2001 From: Laurent Lienher Date: Tue, 12 Nov 2024 13:50:41 +0100 Subject: [PATCH 1/2] Support OGC API --- .python-version | 2 +- docker-compose-lib.yaml | 4 ++++ mapserver/mapserver.map.tmpl | 3 ++- test | 19 +++++++++++++++ ui/package-lock.json | 30 ++++++++++++++++++++++++ ui/src/interfaces/ControllerDesktop.ts | 32 ++++++++++++++++++++++++++ 6 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 test diff --git a/.python-version b/.python-version index 24ee5b1be..e4fba2183 100644 --- a/.python-version +++ b/.python-version @@ -1 +1 @@ -3.13 +3.12 diff --git a/docker-compose-lib.yaml b/docker-compose-lib.yaml index 9210b816e..0f344c1bb 100644 --- a/docker-compose-lib.yaml +++ b/docker-compose-lib.yaml @@ -97,6 +97,8 @@ services: - CPL_VSIL_CURL_CACHE_SIZE - CPL_VSIL_CURL_USE_HEAD - GDAL_DISABLE_READDIR_ON_OPEN + ports: + - 8090:8080 qgisserver: image: camptocamp/geomapfish-qgisserver:gmf${GEOMAPFISH_MAIN_VERSION}-qgis${QGIS_VERSION} @@ -143,6 +145,8 @@ services: - QGIS_SERVER_API_WFS3_MAX_LIMIT - QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES - QGIS_SERVER_OVERRIDE_SYSTEM_LOCALE + ports: + - 8091:8080 tinyows: image: camptocamp/tinyows:master diff --git a/mapserver/mapserver.map.tmpl b/mapserver/mapserver.map.tmpl index b5d43f617..b17d3398d 100644 --- a/mapserver/mapserver.map.tmpl +++ b/mapserver/mapserver.map.tmpl @@ -72,9 +72,10 @@ MAP "ows_enable_request" "*" "ows_title" "GeoMapFish demo" "ows_abstract" "Some example layers" - "ows_onlineresource" "${VISIBLE_WEB_PROTOCOL}://${VISIBLE_WEB_HOST}${VISIBLE_ENTRY_POINT}mapserv_proxy?ogcserver=MapServer" "ows_srs" "EPSG:2056" "wms_allow_getmap_without_styles" "true" + "ows_onlineresource" "${VISIBLE_WEB_PROTOCOL}://${VISIBLE_WEB_HOST}${VISIBLE_ENTRY_POINT}mapserv_proxy/?ogcserver=MapServer" + "oga_onlineresource" "${VISIBLE_WEB_PROTOCOL}://${VISIBLE_WEB_HOST}${VISIBLE_ENTRY_POINT}mapserv_proxy/mapserver/MapServer/ogcapi" END END LEGEND diff --git a/test b/test new file mode 100644 index 000000000..e8a052c01 --- /dev/null +++ b/test @@ -0,0 +1,19 @@ +curl 'http://localhost:8090/mapserv_proxy/MapServer/ogcapi/collections/osm_open/items?bbox=6.0,46.0,7.0,47.0&limit=100&offset=0' +curl 'http://localhost:8091/mapserv_proxy/QGIS_Server/wfs3/collections/points/items?bbox=6.0,46.0,7.0,47.0&limit=100&map=/etc/qgisserver/project.qgs' + + +curl -k 'https://localhost:8484/mapserv_proxy?ogcserver=MapServer&SERVICE=WMS&REQUEST=GetCapabilities' +curl -k 'https://localhost:8484/mapserv_proxy?ogcserver=QGIS_Server&SERVICE=WMS&REQUEST=GetCapabilities' + + +curl -k 'https://localhost:8484/mapserv_proxy/MapServer/ogcapi/collections/osm_open/items?bbox=6.0,46.0,7.0,47.0&limit=100&offset=0' +curl -k 'https://localhost:8484/mapserv_proxy/QGIS_Server/wfs3/collections/points/items?bbox=6.0,46.0,7.0,47.0&limit=100' + + + +curl 'https://geomapfish-demo-2-9.camptocamp.com/mapserv_proxy?ogcserver=MapServer&SERVICE=WMS&REQUEST=GetCapabilities' +curl 'https://geomapfish-demo-2-9.camptocamp.com/mapserv_proxy?ogcserver=QGIS_Server&SERVICE=WMS&REQUEST=GetCapabilities' + + +curl 'https://geomapfish-demo-2-9.camptocamp.com/mapserv_proxy/MapServer/ogcapi/collections/osm_open/items?bbox=6.0,46.0,7.0,47.0&limit=100&offset=0' +curl 'https://geomapfish-demo-2-9.camptocamp.com/mapserv_proxy/QGIS_Server/wfs3/collections/points/items?bbox=6.0,46.0,7.0,47.0&limit=100' diff --git a/ui/package-lock.json b/ui/package-lock.json index a9b1cca74..a1de556b0 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -84,6 +84,27 @@ "dev": true, "license": "(Apache-2.0 AND BSD-3-Clause)" }, + "node_modules/@camptocamp/ogc-client": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@camptocamp/ogc-client/-/ogc-client-1.1.0.tgz", + "integrity": "sha512-+Vj4G1D6YNxqRsKtdCA6fWHlFjNJxdK8xRbnXlgJwfRNtFxK78qkPeAuN82hxjgZrEmAOQzPZWgELDAjDq2UAQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@rgrove/parse-xml": "^4.1.0" + }, + "peerDependencies": { + "ol": ">5.x", + "proj4": ">2.8" + }, + "peerDependenciesMeta": { + "ol": { + "optional": true + }, + "proj4": { + "optional": true + } + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", @@ -580,6 +601,15 @@ "license": "MIT", "peer": true }, + "node_modules/@rgrove/parse-xml": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rgrove/parse-xml/-/parse-xml-4.2.0.tgz", + "integrity": "sha512-UuBOt7BOsKVOkFXRe4Ypd/lADuNIfqJXv8GvHqtXaTYXPPKkj2nS2zPllVsrtRjcomDhIJVBnZwfmlI222WH8g==", + "license": "ISC", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", diff --git a/ui/src/interfaces/ControllerDesktop.ts b/ui/src/interfaces/ControllerDesktop.ts index 505d9da0e..911d5909e 100644 --- a/ui/src/interfaces/ControllerDesktop.ts +++ b/ui/src/interfaces/ControllerDesktop.ts @@ -39,6 +39,7 @@ import ngeoStreetviewModule from 'ngeo/streetview/module'; import ngeoRoutingModule from 'ngeo/routing/module'; import ngeoStatemanagerWfsPermalink from 'ngeo/statemanager/WfsPermalink'; import '../webcomponents/index'; +import {OgcApiEndpoint} from '@camptocamp/ogc-client'; /** * @private @@ -55,6 +56,37 @@ class Controller extends AbstractDesktopController { if (this.dimensions.FLOOR == undefined) { this.dimensions.FLOOR = '*'; } + + // const baseUrl = 'http://localhost:8090/mapserv_proxy/mapserver/MainPNG/ogcapi'; + // const ogcAPIManager = new OgcApiEndpoint(baseUrl); + // + // // features in the bbox + // const bbox: [number, number, number, number] = [-6.8824, 58.1736, -6.7937, 58.2042]; + // ogcAPIManager.getCollectionItems('osm_open', 100, 0, false, undefined, bbox).then((features) => { + // console.log(features); + // }); + + // MapServer route: /mapserv_proxy//ogcapi/* + fetch( + 'https://localhost:8484/mapserv_proxy//ogcapi/collections//items?bbox=6.0,46.0,7.0,47.0&limit=100&offset=0', + ); + fetch( + 'http://localhost:8090/mapserv_proxy/MainPNG/ogcapi/collections/osm_open/items?bbox=6.0,46.0,7.0,47.0&limit=100&offset=0&ogcserver=MainPNG', + ); + + // QGISServer route: /mapserv_proxy//wfs3/* + fetch( + 'https://localhost:8484/mapserv_proxy//wfs3/collections/ Date: Mon, 9 Dec 2024 14:41:00 +0000 Subject: [PATCH 2/2] Apply pre-commit fix From the artifact of the previous workflow run --- ui/package-lock.json | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index a1de556b0..a9b1cca74 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -84,27 +84,6 @@ "dev": true, "license": "(Apache-2.0 AND BSD-3-Clause)" }, - "node_modules/@camptocamp/ogc-client": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@camptocamp/ogc-client/-/ogc-client-1.1.0.tgz", - "integrity": "sha512-+Vj4G1D6YNxqRsKtdCA6fWHlFjNJxdK8xRbnXlgJwfRNtFxK78qkPeAuN82hxjgZrEmAOQzPZWgELDAjDq2UAQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@rgrove/parse-xml": "^4.1.0" - }, - "peerDependencies": { - "ol": ">5.x", - "proj4": ">2.8" - }, - "peerDependenciesMeta": { - "ol": { - "optional": true - }, - "proj4": { - "optional": true - } - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.23.1", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", @@ -601,15 +580,6 @@ "license": "MIT", "peer": true }, - "node_modules/@rgrove/parse-xml": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rgrove/parse-xml/-/parse-xml-4.2.0.tgz", - "integrity": "sha512-UuBOt7BOsKVOkFXRe4Ypd/lADuNIfqJXv8GvHqtXaTYXPPKkj2nS2zPllVsrtRjcomDhIJVBnZwfmlI222WH8g==", - "license": "ISC", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",