Beeldverwerkingketen GDI-Vlaanderen (BVK) LiDAR data hosting services: DHM Vlaanderen I (2001 - 2004) DHM Vlaanderen II - Proefproject Geraardsbergen (2012) DHM Vlaanderen II (2013 - 2015) Interfaces naar metadata en data Versie 1.0 22 maart 2013 © BVK-MM, 2013 1 / 22 Beeldverwerkingsketen GDI-Vlaanderen Versie Auteur Datum aanmaak Datum afdruk 2 / 22 Versie 1.0 AGIV-VITO BVK ontwikkelteam 22 maart 2013 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen Document history Release Date Description of Change Editors V1.0 22/03/2013 First release version JB, NVC © BVK, 2013 Reviewers 3 / 22 Beeldverwerkingsketen GDI-Vlaanderen Content 1 Introduction 5 1.1 References 5 1.2 Terms, definitions en abbreviations 5 1.3 Document scope 5 2 Service authentication and authorization 8 3 WMS/WFS service capabilities 9 3.1 WMS service 9 3.2 WFS service 10 WMS usage 11 4.1 Get a map of the available LiDAR tiles 11 4.2 Get the attributes of a LiDAR tile 11 4.3 Styling the WMS results 13 4.4 Restrictions 15 4.5 WMS 1.1.1 and 1.3.0 15 WFS usage 17 5.1 Get layer information: DescribeFeatureType 17 5.2 Query metadata: GetFeature 18 5.3 GetFeature restrictions 18 5.4 Output format 19 6 Metadata 19 7 Browsing the datasets 22 4 5 4 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen 1 Introduction 1.1 References 1.2 Terms, definitions en abbreviations 1.3 BVK Beeldverwerkingsketen LiDAR Light Detection and Ranging DHMV_I LiDAR campaigns over Flanders from 2001-2004 in the framework of the construction of a bare earth model (DHM) covering Flanders. DHMV_II LiDAR campaigns over Flanders from 2013-2015 in the framework of the construction of a bare earth model (DHM) covering Flanders. OGC Open Geospatial Consortium WMS Web Map Service WFS Web Feature Service Document scope DTM-Flanders I (2001 – 2004) : Over the years 2001 – 2004, AGIV in cooperation with partners ordered a regional LiDAR campaign in order to prepare a high resolution DTM (DTMV-I). the LiDAR data was captured at an average density of 1 point per 4m², to obtain a TIN with an average point density of 1 point per 20m². More information on the partnerships, the available derived products and the applied processing can be found at http://www.agiv.be/gis/projecten/?catid=35. This document describes the hosting services for the raw LiDAR data. DTM-Flanders II (2013 – 2015) : In 2013 AGIV initiated an update of the former DTM. Therefore LiDAR data is being recorded over a 3 year period 2013 – 2015, with an average point density of 16 points per m² and multiple returns. Simultaneously, during the LiDAR flight also multispectral (RGB) imagery is recorded with a ground resolution of 8cm. More information on this DTM update project can be found at http://www.agiv.be/gis/projecten/?catid=218. In the framework of the DTM update project, a LiDAR test project was initiated in 2012 over the municipality Geraardsbergen. The LiDAR data was recorded with the same specifications as those specified for the actual DTM update project. As such this test project enables developers, as well as users to get acquainted with the newly acquired data, the required (pre-)processing steps and its possibilities. The current datasets of DTMV-I and the 2012 test-project Geraardsbergen, as well as the future datasets captured in the framework of the DTMV-II campaigns are hosted at the VITO facilities in the context of the BVK project ( AGIV (www.agiv.be) and VITO (www.vito.be) cooperation) with respect to remote sensing data hosting services. WFS and WMS services are provided by the BVK project to disclose the attributes of the LiDAR measurements. The decision to use the OGC (Open Geospatial Consortium © BVK, 2013 5 / 22 Beeldverwerkingsketen GDI-Vlaanderen http://www.opengeospatial.org/) WFS/WMS interfaces is based on INSPIRE interoperability requirements with respect to the geographic data services. The WMS interface is to be used to request the LiDAR-tile bounding boxes as a bitmap which represents a projected and clipped visualization according the client viewing specifications. A WFS is to be used whenever the underlying attributes of the features (i.e. the LiDAR tiles) must be available. Besides the WMS and WFS interfaces, this document describes the HTTP GET interface to retrieve the LiDAR LAZ formatted tiles. In the context of the Geraardsbergen test-project 2012, also the DSM and DTM raster tiles as well as the multispectral RGB orthomozaiek tiles of the region are made available through WMS/WFS interfaces and HTTP GET interfaces for retrieving the tiles. The LiDAR processing for DTM and DSM generation is performed with LASTOOLS. For more information on LASTOOLS please consult the LASTOOLS website at: http://rapidlasso.com/ or at: http://www.laszip.org/. This document is especially intended for service developers or GIS analysts, who want to integrate the BVK-hosted data-layers in their Web or GIS applications. As such, because this audience might not have Dutch as mother-tongue, it was decided to provide the interface documentation in English. Figure 1. Partial view on the LiDAR tiles of the DHM1 dataset. 6 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen Figure 2. LiDAR tiles of the Geraardsbergen test-project 2012. Figure 3. DSM/DTM/RGBmozaiek tiles of the Geraardsbergen test-project 2012. © BVK, 2013 7 / 22 Beeldverwerkingsketen GDI-Vlaanderen 2 Service authentication and authorization The request of a LiDAR tile or LiDAR tile metadata is a transaction involving three parties: The mandated users through their internet browser or client application (client), AGIV which manages the mandates of users (Identity Provider), and VITO hosting the LiDAR data (Service Provider). AGIV has chosen to implement the role of “Identity Provider” based on the WS-Federation standard and comes in two “flavors”: (1) a passive scenario and (2) an active scenario. In the passive scenario, the request of the client is redirected to the AGIV STS (Security Token Service) https://auth.agiv.be/. Upon successful logon, the client can start a valid session. However, the passive scenario is not possible in all clients (e.g. GIS software packages). Therefore, an active scenario is provided. In this scenario, client applications can transfer their requests using the “user id” and password basic authentication over HTTPS. In your favorite browser you can test both security scenarios using the examples in following sections. For testing the interfaces of the active scenario, the BVK development team has used the open source GIS “QuantumGIS” (http://www.qgis.org/). 8 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen 3 WMS/WFS service capabilities In the context of the BVK with respect to the LiDAR hosting services, WFS and WMS interfaces are provided to query and retrieve the metadata of the LiDAR tiles. 1 Since GeoServer is the reference implementation of the Open Geospatial Consortium (OGC) Web Feature Service (WFS) and Web Coverage Service (WCS) standards, as well as a high performance certified compliant Web Map Service (WMS), the combination Geoserver and 2 PostGIS was chosen to expose the spatial data layers. 3.1 WMS service The WMS interface is intended to request the LiDAR tile bounding boxes as a bitmap. This bitmap has the spatial extend and the size of the client map-drawing canvas (or the client map-drawing canvas can be subdivided in smaller tiles to get a quicker response of the Geoserver) and can be requested in a geographic projection and datum the client is using. To explore the available options of the WMS one can make a call to the GeoServer using the GetCapabilities request type. Passive scenario Active scenario Host remotesensing.agiv.be remotesensing.agiv.be Path (case sensitive) /geoserver/wms /gis/geoserver/wms Layer (case sensitive) Agiv:LiDAR_DHMV_I Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012 Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_RGBMosaics_ tiles Agiv:LiDAR_DHMV_II (currently no data available) Protocol https Http method GET, POST GetCapabilities example in active scenario: https://remotesensing.agiv.be/gis/geoserver/wms?REQUEST=GetCapabilities GetCapabilities example in passive scenario: https://remotesensing.agiv.be/geoserver/wms?REQUEST=GetCapabilities 1 2 http://geoserver.org/ http://postgis.refractions.net/ © BVK, 2013 9 / 22 Beeldverwerkingsketen GDI-Vlaanderen 3.2 WFS service The WFS is intended to be used whenever the underlying attributes of the features (i.e. the LiDAR LAZ tiles) must be available. To explore the available options of the WFS services, one can make a call to the GeoServer using the GetCapabilities request type. Passive scenario Active scenario Host remotesensing.agiv.be remotesensing.agiv.be Path (case sensitive) /geoserver/wfs /gis/geoserver/wfs Layer (case sensitive) Agiv:LiDAR_DHMV_I Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012 Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_RGBMosaics_ti les Agiv:LiDAR_DHMV_II (currently no data available) Protocol https Http method GET, POST GetCapabilities example in active scenario: https://remotesensing.agiv.be/gis/geoserver/wfs?REQUEST=GetCapabilities GetCapabilities example in passive scenario: https://remotesensing.agiv.be/geoserver/wfs?REQUEST=GetCapabilities 10 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen 4 4.1 WMS usage Get a map of the available LiDAR tiles Using the WMS GetMap request, one can ask Geoserver to generate a PNG or JPG bitmap for a certain bounding box. Table 1 presents some sample WMS GetMap calls. Table 1. WMS HTTP-GET GetMap examples. Active scenario: https://remotesensing.agiv.be/gis/geoserver/wms?LAYERS=Agiv:LiDAR_ DHMV_II_ProefprojectGeraardsbergen_2012&TRANSPARENT=TRUE&F ORMAT=image/png&TILED=false&SERVICE=WMS&VERSION=1.3.0&RE QUEST=GetMap&STYLES=&CRS=EPSG:31370&BBOX=111900,156650,1 20100,164850&WIDTH=256&HEIGHT=256 Passive scenario: https://remotesensing.agiv.be/geoserver/wms?LAYERS=Agiv:LiDAR_DH MV_II_ProefprojectGeraardsbergen_2012&TRANSPARENT=TRUE&FOR MAT=image/png&TILED=false&SERVICE=WMS&VERSION=1.3.0&REQUE ST=GetMap&STYLES=&CRS=EPSG:31370&BBOX=111900,156650,12010 0,164850&WIDTH=256&HEIGHT=256 Active scenario: https://remotesensing.agiv.be/gis/geoserver/wms?LAYERS=Agiv:LiDAR_ DHMV_I&TRANSPARENT=TRUE&FORMAT=image/png&TILED=false&SE RVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&STYLES=&CRS=EP SG:31370&BBOX=111900,156650,120100,164850&WIDTH=256&HEIGHT =256 Passive scenario: https://remotesensing.agiv.be/geoserver/wms?LAYERS=Agiv:LiDAR_DH MV_I&TRANSPARENT=TRUE&FORMAT=image/png&TILED=false&SERVI CE=WMS&VERSION=1.3.0&REQUEST=GetMap&STYLES=&CRS=EPSG: 31370&BBOX=111900,156650,120100,164850&WIDTH=256&HEIGHT=25 6 4.2 Get the attributes of a LiDAR tile One can use the WMS service also for requesting the attribute information of the LiDAR tiles covering a certain location. Since more than one LiDAR tile can cover a location, one should use the FEATURE_COUNT parameter. An example WMS GetFeatureInfo call is presented in Table 2. © BVK, 2013 11 / 22 Beeldverwerkingsketen GDI-Vlaanderen Table 2. WMS HTTP-GET GetFeatureInfo example. Active scenario: https://remotesensing.agiv.be/gis/geoserver/wms?LAYERS=Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012& TRANSPARENT=TRUE&FORMAT=image/png&TILED=false&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatur eInfo&STYLES=&CRS=EPSG:31370&BBOX=111900,156650,120100,164850&WIDTH=256&HEIGHT=256&QUERY_LA YERS=Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012&INFO_FORMAT=text/html&X=131&Y=132&FEATURE _COUNT=50 Results for FeatureType 'LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012': -------------------------------------------tile_id = 176098 tile_geometry = [GEOMETRY (Polygon) with 194 points] tile_location = LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_VS_018/Tiles/20120430_ES_VS_018_116000_160500. laz tile_date = 2012-04-30 tile_day = 121 tile_year = 2012 tile_julianday = 2456048.0 tile_file_source_id = 18 tile_system_identifier = Litemapper_6800 tile_point_density_allreturn = 11.27 tile_point_density_lastreturn = 8.82 tile_contractor = ES tile_totalpoints = 2165172 --------------------------------------------------------------------------------------tile_id = 175319 tile_geometry = [GEOMETRY (Polygon) with 164 points] tile_location = LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_VS_019/Tiles/20120430_ES_VS_019_116000_160500. laz tile_date = 2012-04-30 tile_day = 121 tile_year = 2012 tile_julianday = 2456048.0 tile_file_source_id = 19 tile_system_identifier = Litemapper_6800 tile_point_density_allreturn = 11.29 tile_point_density_lastreturn = 9.82 tile_contractor = ES tile_totalpoints = 1282872 --------------------------------------------------------------------------------------tile_id = 175961 tile_geometry = [GEOMETRY (Polygon) with 230 points] tile_location = LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_VS_016/Tiles/20120430_ES_VS_016_116000_160500. laz tile_date = 2012-04-30 tile_day = 121 tile_year = 2012 tile_julianday = 2456048.0 tile_file_source_id = 16 tile_system_identifier = Litemapper_6800 tile_point_density_allreturn = 12.5 tile_point_density_lastreturn = 9.19 tile_contractor = ES tile_totalpoints = 1782692 --------------------------------------------------------------------------------------tile_id = 175497 tile_geometry = [GEOMETRY (Polygon) with 246 points] tile_location = LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_VS_017/Tiles/20120430_ES_VS_017_116000_160500. laz tile_date = 2012-04-30 tile_day = 121 tile_year = 2012 tile_julianday = 2456048.0 12 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen tile_file_source_id = 17 tile_system_identifier = Litemapper_6800 tile_point_density_allreturn = 12.21 tile_point_density_lastreturn = 9.25 tile_contractor = ES tile_totalpoints = 2667038 --------------------------------------------------------------------------------------tile_id = 176241 tile_geometry = [GEOMETRY (Polygon) with 235 points] tile_location = LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_DS_036/Tiles/20120430_ES_DS_036_116000_160500. laz tile_date = 2012-04-30 tile_day = 121 tile_year = 2012 tile_julianday = 2456048.0 tile_file_source_id = 36 tile_system_identifier = Litemapper_6800 tile_point_density_allreturn = 14.99 tile_point_density_lastreturn = 10.45 tile_contractor = ES tile_totalpoints = 2223726 -------------------------------------------- 4.3 Styling the WMS results Every layer registered with GeoServer needs to have at least one style associated with it. GeoServer comes bundled with a few basic styles, and any number of new styles can be added. It is possible to change any layer’s associated style at any time in the Layers page of the Web Administration Interface. The styling can be changed in the WMS GetMap request. A good cookbook on SLD styling can be found online: http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/. To use a custom SLD one can include the SLD as an URL parameter by using the SLD_BODY tag. Examples are presented in Table 3 and Table 4. Note that such XML needs an appropriate URL encoding. The non-alphanumeric characters need 3 to be replaced by the corresponding hexadecimal ASCII value . Also note that the LAYERS parameter is removed in the WMS call since already specified in the SLD_BODY parameter. Remark that for large XML style definition documents, the HTTP POST method will have to be used, since the length of the HTTP GET URL will become too large. 3 For example : one can use http://meyerweb.com/eric/tools/dencoder/ to encode an XML: copy/paste the XML in the edit field, press the encode button, and copy/paste the result after the “SLD_BODY=” parameter. © BVK, 2013 13 / 22 Beeldverwerkingsketen GDI-Vlaanderen Table 3. WMS GetMap example with custom SLD – LiDAR tiles https://remotesensing.agiv.be/gis/geoserver/wms?LAYERS=Agiv:LiDAR_DHMV_II_ ProefprojectGeraardsbergen_2012&TRANSPARENT=TRUE&FORMAT=image/png &SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:31370&BB OX=111900,156650,120100,164850&WIDTH=256&HEIGHT=256&SLD_BODY=%3 CStyledLayerDescriptor%20version%3D%221.0.0%22%20xsi%3AschemaLocation %3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%20StyledLayerDescriptor.xsd %22%20xmlns%3D%22http%3A%2F%2Fwww.opengis.net%2Fsld%22%20xmlns% 3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%20xmlns%3Axlink %3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xmlns%3Axsi%3 D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchemainstance%22%3E%3CNamedLayer%3E%3CName%3EAgiv:LiDAR_DHMV_II_Proe fprojectGeraardsbergen_2012%3C%2FName%3E%3CUserStyle%3E%3CTitle%3E GeoServer%20SLD%20Cook%20Book%3A%20Simple%20point%20with%20stroke %3C%2FTitle%3E%3CFeatureTypeStyle%3E%3CRule%3E%3CPolygonSymbolize r%3E%3CFill%3E%3CCssParameter%20name%3D%22fill%22%3E%23FFFF00%3 C%2FCssParameter%3E%3CCssParameter%20name%3D%22fillopacity%22%3E0.5%3C%2FCssParameter%3E%3C%2FFill%3E%3CStroke%3E% 3CCssParameter%20name%3D%22stroke%22%3E%230000FF%3C%2FCssPara meter%3E%3CCssParameter%20name%3D%22strokewidth%22%3E1%3C%2FCssParameter%3E%3C%2FStroke%3E%3C%2FPolygon Symbolizer%3E%3C%2FRule%3E%3C%2FFeatureTypeStyle%3E%3C%2FUserSt yle%3E%3C%2FNamedLayer%3E%3C%2FStyledLayerDescriptor%3E Table 4. SLD style definition XML: yellow polygons with blue stroke line. The “Name” tag must contain the name of the spatial layer to query. <StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <NamedLayer> <Name>Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012</Name> <UserStyle> <Title>Polygon with stroke</Title> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> <CssParameter name="fill">#FFFF00</CssParameter> <CssParameter name="fill-opacity">0.5</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#0000FF</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> </PolygonSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor> 14 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen 4.4 Restrictions To prevent CPU-expensive WMS queries (e.g. rendering all LiDAR tiles covering Flanders in a bitmap), every single WMS request with respect to the data-layers: Agiv:LiDAR_DHMV_I Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012 Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_RGBMosaics_tiles Agiv:LiDAR_DHMV_II (currently no data available) is restricted to a maximum area of 100 square kilometer. A HTTP error code 400 (Bad Request) is returned when the requested area is larger. If the client-view is larger than 100 km², the client shall launch multiple WMS calls to fill the client canvas. 4.5 WMS 1.1.1 and 1.3.0 WMS 1.3 is a standard that is needed for INSPIRE and is increasingly being required by many agencies. WMS 1.3 was only recently added to GeoServer as of version 2.1-beta3. Thus in the current version (2.1.2), WMS 1.3.0 is supported. The Geoserver manual states: “The major differences between WMS versions 1.1.1 and 1.3.0 are: In 1.1.1 geographic coordinate systems specified with the EPSG namespace are defined to have an axis ordering of longitude/latitude. In 1.3.0 the ordering is latitude/longitude. In the GetMap operation the “srs” parameter from 1.1.1 is now “crs” in 1.3.0. Although GeoServer supports both regardless of version. The specification mandates that the ordering of a geographic crs represented via an epsg identifier (for example EPSG:4326) be ordered latitude/longitude or y/x. This essentially "flips" the regular representation which is longitude/latitude or x/y. Because of the way geoserver internally configures the geotools referencing subsystems, all geographic crs referenced by the historical epsg identifier, EPSG:XXXX, be ordered longitude/latitude. However there is an alternate and explicit notation in which the prefix urn:x-ogc:def:crs:EPSG:XXXX is used. When this prefixed is used it is interpreted to mean latitude/longitude. So the approach to solving the axis order issue is simple. For WMS 1.3 operations simply replace the former prefix with the latter prefix during the request parsing phase of the operation.” This is proven by following example, following calls deliver identical results: https://remotesensing.agiv.be/gis/geoserver/wms?LAYERS=Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012&TR ANSPARENT=TRUE&FORMAT=image/png&TILED=false&SERVICE=WMS&VERSION=1.1.0&REQUEST=GetMap&STYL ES=&SRS=EPSG:31370&BBOX=111900,156650,120100,164850&WIDTH=256&HEIGHT=256 https://remotesensing.agiv.be/gis/geoserver/wms?LAYERS=Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012&TR ANSPARENT=TRUE&FORMAT=image/png&TILED=false&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&STYL ES=&CRS=EPSG:31370&BBOX=111900,156650,120100,164850&WIDTH=256&HEIGHT=256 © BVK, 2013 15 / 22 Beeldverwerkingsketen GDI-Vlaanderen So, for the Belgian Lambert72 projection, it is not needed to flip the bounding box parameters from x/y towards y/x. Otherwise, erroneous results will be obtained. 16 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen 5 WFS usage The WFS's preferred usage is via HTTP-POST, however for all examples described in this section, the HTTP-GET method will work just fine. 5.1 Get layer information: DescribeFeatureType To discover the properties or attributes of the FeatureType of interest, one first issues a DescribeFeatureType request. The TypeName element shall contain the WFS layer name. In Table 5, the HTTP-GET URLs are given for the active scenario. Now the consumer of the WFS service knows that he can pick attributes out of the <sequence> element. Important to note here is that the attributes should be prefixed with the namespace, currently being “Agiv”. So to use these attributes in a GetFeature request, one should use Agiv: tile_julianday for example. Table 5. Result of a “DescribeFeatureType” request, LiDAR tiles. https://remotesensing.agiv.be/gis/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TY PENAME=Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012 <xsd:schema elementFormDefault="qualified" targetNamespace="http://mobile-mapping.agiv.be"> <xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://mmlvsint1.intern.vgt.vito.be:8079/geoserver/schemas/gml/2.1.2/featur e.xsd"/> <xsd:complexType name="LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012Type"> <xsd:complexContent> <xsd:extension base="gml:AbstractFeatureType"> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="0" name="tile_id" nillable="true" type="xsd:int"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_geometry" nillable="true" type="gml:GeometryPropertyType"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_location" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_date" nillable="true" type="xsd:date"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_day" nillable="true" type="xsd:int"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_year" nillable="true" type="xsd:int"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_julianday" nillable="true" type="xsd:double"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_file_source_id" nillable="true" type="xsd:int"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_system_identifier" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_point_density_allreturn" nillable="true" type="xsd:double"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_point_density_lastreturn" nillable="true" type="xsd:double"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_contractor" nillable="true" type="xsd:string"/> <xsd:element maxOccurs="1" minOccurs="0" name="tile_totalpoints" nillable="true" type="xsd:int"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012" substitutionGroup="gml:_Feature" type="Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012Type"/> </xsd:schema> © BVK, 2013 17 / 22 Beeldverwerkingsketen GDI-Vlaanderen 5.2 Query metadata: GetFeature To perform a spatial query, multiple options can be used. These options are listed in Table 6. Table 6. Spatial query options taken from the “GetCapabilites” results. <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator <ogc:SpatialOperator name="Disjoint"/> name="Equals"/> name="DWithin"/> name="Beyond"/> name="Intersects"/> name="Touches"/> name="Crosses"/> name="Contains"/> name="Overlaps"/> name="BBOX"/> From experiments, it was noticed that the BBOX query performs superior because this type of filtering can make optimal use of the R-tree that is used in the underlying PostGIS database. Here, both DWithin and BBOX filtering mechanism will be described below. Note that in the GetFeature examples below, we request only three attributes: position, id and filelocation. The consumer of the service can request any attribute that comes out of the DescribeFeatureType call. BBOX, active scenario examples: https://remotesensing.agiv.be/gis/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME= Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012&SRSNAME=EPSG:31370&BBOX=115950,160700,116050,1 60800 DWithin, active scenario examples: https://remotesensing.agiv.be/gis/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME= Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012&SRSNAME=EPSG:31370&Filter=<Filter><DWithin><Propert yName>Agiv:tile_geometry</PropertyName><Point><coordinates>116000,160750</coordinates></Point><Distance units="meter">50</Distance></DWithin></Filter> 5.3 GetFeature restrictions To avoid “network-expensive” WFS calls (e.g. all LiDAR tiles in a province or entire Flanders), the WFS service has a hard limit on the number of features that are returned. This limit is set at 10,000 for following data-layers: Agiv:LiDAR_DHMV_I Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012 Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_1m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DTM_5m_tiles Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_RGBMosaics_tiles Agiv:LiDAR_DHMV_II (currently no data available) The user can lower this limit by using the maxFeatures attribute that is available in the OGC WFS standard. 18 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen 5.4 Output format The default format of the WFS result is GML. One can choose other formats as described in the GetCapabilities result. A popular alternative for GML, which also has a smaller network footprint is the comma delimited format (CSV). An example HTTP-GET call is given here: https://remotesensing.agiv.be/gis/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME= Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012&SRSNAME=EPSG:31370&BBOX=115950,160700,116050,1 60800&outputformat=csv 6 Metadata All LiDAR tile attributes are listed in Table 7. The [tile_geometry] parameter contains a list of x, y coordinates describing the convex hull of the LiDAR data. The [tile_location] parameter presents the physical location of the image and can be used to construct the http-get command to retrieve the image. The URLs for retrieving an image in the active and passive security scenario are respectively (the [filelocation] path is highlighted in blue, the server path in red): Active: https://remotesensing.agiv.be/gis/data/LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_VS_018/Tiles/2012 0430_ES_VS_018_115500_160500.laz Passive: https://remotesensing.agiv.be/data/LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_VS_018/Tiles/2012043 0_ES_VS_018_115500_160500.laz The [tile_date] string presents the data in following format: year-month-day. During database ingestion, it was decided to add an additional floating point parameter [tile_julianday]. The later parameter presents the date in an astronomical fashion. Julian days allow for direct time computations or time comparisons. The [tile_day] parameters presents the day of the year. The [tile_year] parameters presents the year. The [tile_point_density_allreturn] gives the total number of points per square meter. Multireturn LiDAR offers an opportunity to capture dense point data defining the first surface (canopy) and penetration into the vegetation cover with many points hitting the ground. The potential therefore exists to “map” the canopy, the bare earth, and many of the structural characteristics such as canopy height, volume, and basal diameter from a single flight. The [tile_point_density_lastreturn] gives the number of points per square meter. For multiple returns, either the first or the last return should be used where the last return is preferred since it is more likely to be at the ground surface. The [tile_contractor] presents a short code for the company who executed the LiDAR measurement campaign. The [tile_totalpoints] gives the total number of points in the LAZ file. © BVK, 2013 19 / 22 Beeldverwerkingsketen GDI-Vlaanderen Table 7. The LiDAR tile attributes (WFS GML formatted) <gml:featureMember> <Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012 fid="LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012.fid--3e8864ce_13d8de84acc_-734"> <Agiv:tile_id>176076</Agiv:tile_id> <Agiv:tile_geometry> <gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#31370"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates decimal="." cs="," ts=" ">115999.99,160602.58 ... 115999.99,160579.31 115999.99,160602.58</gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </Agiv:tile_geometry> <Agiv:tile_location>LiDAR_DHMV_2_ProefProjectGB2012/20120430_ES_VS_018/Tiles/20120430_ES_VS _018_115500_160500.laz</Agiv:tile_location> <Agiv:tile_date>2012-04-30</Agiv:tile_date> <Agiv:tile_day>121</Agiv:tile_day> <Agiv:tile_year>2012</Agiv:tile_year> <Agiv:tile_julianday>2456048.0</Agiv:tile_julianday> <Agiv:tile_file_source_id>18</Agiv:tile_file_source_id> <Agiv:tile_system_identifier>Litemapper_6800</Agiv:tile_system_identifier> <Agiv:tile_point_density_allreturn>12.48</Agiv:tile_point_density_allreturn> <Agiv:tile_point_density_lastreturn>9.28</Agiv:tile_point_density_lastreturn> <Agiv:tile_contractor>ES</Agiv:tile_contractor> <Agiv:tile_totalpoints>2306496</Agiv:tile_totalpoints> </Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012> </gml:featureMember> All DSM/DTM/RGB tile attributes are listed in Table 8 (ProefprojectGeraardsbergen_2012). The [lam_xmin, lam_xmax, lam_ymin, lam_ymax] parameter contains de corresponding minimum and maximum boundery coordinates (Lam72, EPSG:31370) for the data tile. The [the_geom] parameter contains a list of x, y coordinates describing the convex hull of the DSM/DTM/RGB data. The [Path] parameter presents the physical location of the image and can be used to construct the http-get command to retrieve the image. The URLs for retrieving an image in the active and passive security scenario are respectively (the [filelocation] path is highlighted in blue, the server path in red): Active: https://remotesensing.agiv.be/gis/data/LiDAR_DHMV_2_ProefProjectGB2012/DSM_01/DSM_2012_1M_115500_ 160500.tif Passive: https://remotesensing.agiv.be/data/LiDAR_DHMV_2_ProefProjectGB2012/DSM_01/DSM_2012_1M_115500_160 500.tif 20 / 22 © BVK, 2013 Beeldverwerkingsketen GDI-Vlaanderen Table 8. The DTM/DSM/RGB tile attributes (WFS GML formatted) <gml:featureMember> <Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_1m_tiles fid="LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_1m_tiles.fid-586f6581_13f09b46955_-166"> <Agiv:id>61</Agiv:id> <Agiv:resourcename>LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012</Agiv:resourcename> <Agiv:path> LiDAR_DHMV_2_ProefProjectGB2012/DSM_01/DSM_2012_1M_115500_160500.tif </Agiv:path> <Agiv:lam_xmin>115500</Agiv:lam_xmin> <Agiv:lam_ymin>160500</Agiv:lam_ymin> <Agiv:lam_xmax>116000</Agiv:lam_xmax> <Agiv:lam_ymax>161000</Agiv:lam_ymax> <Agiv:the_geom> <gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#31370"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates decimal="." cs="," ts=" ">115500,161000 116000,161000 116000,160500 115500,160500 115500,161000</gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </Agiv:the_geom> </Agiv:LiDAR_DHMV_II_ProefprojectGeraardsbergen_2012_DSM_1m_tiles> </gml:featureMember> © BVK, 2013 21 / 22 Beeldverwerkingsketen GDI-Vlaanderen 7 Browsing the datasets For browsing the LiDAR data-layers, as well as the DTM/DSM and RGB product layers, provided through the BVK: https://remotesensing.agiv.be/bvkviewer/ The latter viewer is only intended for demo purposes, interface testing and presenting a quick overview of available datasets. The BVK-team has chosen for the LAZ file format instead of the LAS format for distributing the original LiDAR data. This choice is based on the fact that, the LAZ format: Has the smallest network and storage footprint. A LAZ file is typically more than 6 times smaller in size than a LAS file. Open-source software is available for LAZ file-I/O (e.g. conversion to standard LAS-files). Please consult the LASTOOLS website at: http://rapidlasso.com/ or at: http://www.laszip.org/ Figure 4. BVK viewer. The LiDAR tile is rendered with LasView as part of the LASTOOLS software package. 22 / 22 © BVK, 2013
© Copyright 2026 Paperzz