"loadInCurrentExtent" doesn´t work with newer FROST-Server Version

Issue #659 resolved
Felix Dittombee created an issue

Zur Zeit bin ich dabei ein Geoportal im Raum Erfurt aufzustellen, dabei binde ich die Sensorthings-API an und dabei ist mir was aufgefallen und zwar das die Query falsch gebaut wird wenn „loadThingsOnlyInCurrentExtent“: true; gesetzt wird.

In eurem Mastercode bei mastercode/src/utils/sensorThingsHttps.js bei Zeile 161 wird diese Query gebaut. Dabei wird als erstes auf das Thing zugegriffen, das ist allerdings nichtmehr möglich, ab einer FROST-Version 2.0. Bei dem Bau des filters $filter:st_intersect(Locations/location…) muss das Thing an erster Stelle entfernt werden.

Hier ein Beispiel:

Unter dem FROST-Server Link den ich einbinde möchte wird automatisch auf das Thing zugegriffen sowie diese gebaut wird nach dem Code: [https://airquality-frost.k8s.ilt-dmz.iosb.fraunhofer.de/v1.1/Things?$expand=Locations,Datastreams/Observations($orderby=id%20desc;$top=1;$select=result,phenomenonTime)&;$filter=st_intersects(Thing/Locations/location,geography%27POLYGON%20((10.999878100898687%2050.96707616822474,11.029023897659412%2050.966573328147405,11.029753780151701%2050.9833129049745,11.000597516206263%2050.983816043540145,10.999878100898687%2050.96707616822474))%27)&$count=true](https://airquality-frost.k8s.ilt-dmz.iosb.fraunhofer.de/v1.1/Things?$expand=Locations,Datastreams/Observations($orderby=id%20desc;$top=1;$select=result,phenomenonTime)&;$filter=st_intersects(Thing/Locations/location,geography%27POLYGON%20((10.999878100898687%2050.96707616822474,11.029023897659412%2050.966573328147405,11.029753780151701%2050.9833129049745,11.000597516206263%2050.983816043540145,10.999878100898687%2050.96707616822474))

Dieser geht aber nicht, als Rückmeldung wird mir ausgegeben, dass es das Property: Thing nicht gibt.

Wenn ich jedoch den Link modifiziere indem das Thing nach dem st_intersects entfernt wurde funktioniert dieser Link: [https://airquality-frost.k8s.ilt-dmz.iosb.fraunhofer.de/v1.1/Things?$expand=Locations,Datastreams/Observations($orderby=id%20desc;$top=1;$select=result,phenomenonTime)&;$filter=st_intersects(Locations/location,geography%27POLYGON%20((10.999878100898687%2050.96707616822474,11.029023897659412%2050.966573328147405,11.029753780151701%2050.9833129049745,11.000597516206263%2050.983816043540145,10.999878100898687%2050.96707616822474))%27)&$count=true](https://airquality-frost.k8s.ilt-dmz.iosb.fraunhofer.de/v1.1/Things?$expand=Locations,Datastreams/Observations($orderby=id%20desc;$top=1;$select=result,phenomenonTime)&;$filter=st_intersects(Locations/location,geography%27POLYGON%20((10.999878100898687%2050.96707616822474,11.029023897659412%2050.966573328147405,11.029753780151701%2050.9833129049745,11.000597516206263%2050.983816043540145,10.999878100898687%2050.96707616822474))

Dabei hab ich mir noch euer Beispiel angeschaut, den du mal im Trello Board verlinkt hast und zwar diesen Link hier: https://iot.hamburg.de/v1.1/Things?$filter=Datastreams/properties/serviceName eq 'HH_STA_AutomatisierteVerkehrsmengenerfassung' and Datastreams/properties/layerName eq 'Anzahl_Kfz_Zaehlstelle_15-Min' and st_within(Thing/Locations/location,geography'POLYGON ((9.949444603600341 53.53128104106623,10.038205422356349 53.53054329319297,10.039238513487016 53.57272616848299,9.950389405059003 53.573465046828126,9.949444603600341 53.53128104106623))')&$expand=Locations,Datastreams($filter=properties/layerName eq 'Anzahl_Kfz_Zaehlstelle_15-Min';$expand=Observations($orderby=phenomenonTime desc;$top=1))&$count=true)

Hier wird ja ein anderer Filter benutzt mit st_within sollte aber den gleichen Effekt haben wie st_intersect, wenn ich nach diesem Filter wieder das Thing entferne, funktioniert der Link immer noch: https://iot.hamburg.de/v1.1/Things?$filter=Datastreams/properties/serviceName eq 'HH_STA_AutomatisierteVerkehrsmengenerfassung' and Datastreams/properties/layerName eq 'Anzahl_Kfz_Zaehlstelle_15-Min' and st_within(Locations/location,geography'POLYGON ((9.949444603600341 53.53128104106623,10.038205422356349 53.53054329319297,10.039238513487016 53.57272616848299,9.950389405059003 53.573465046828126,9.949444603600341 53.53128104106623))')&$expand=Locations,Datastreams($filter=properties/layerName eq 'Anzahl_Kfz_Zaehlstelle_15-Min';$expand=Observations($orderby=phenomenonTime desc;$top=1))&$count=true)

Die Ursache ist das in Hamburg ein FROST-Server benutzt wird, der älter ist als die Version 2.0. Den FROST-Server den ich benutze ist auf Version 2.0.

Comments (5)

  1. Log in to comment