Skip to main content

Open ideas have been reviewed by our Product Management and are open for commenting and voting.

Filter by idea status

Filter by product area

4589 Ideas

gtitz
Contributor
gtitzContributor

Extend "Google Maps Polyline Decoder" in GeometryExtractor and GeometryReplacerArchived

In Google Maps Directions API it is possible to get the waypoints from one coordinate to another coordinate as polyline: https://developers.google.com/maps/documentation/directions/Request example:https://maps.googleapis.com/maps/api/directions/json?origin=46.9745777,15.6211898&destination=46.9752438,15.6144307Google returns a JSON (because I have requested a JSON) with several information - including waypoints in an encoded format (see line 63, 87 and 101):{ "geocoded_waypoints" : [ { "geocoder_status" : "OK", "place_id" : "EipLaXJjaGJhY2hlciBTdHIuIDk5LTEyMiwgODA4MSwgw5ZzdGVycmVpY2g", "types" : [ "street_address" ] }, { "geocoder_status" : "OK", "place_id" : "Ej1HdWdnaXR6IEJlcmd3ZWcgNTQsIDgwODEgUGlyY2hpbmcgYW0gVHJhdWJlbmJlcmcsIMOWc3RlcnJlaWNo", "types" : [ "street_address" ] } ], "routes" : [ { "bounds" : { "northeast" : { "lat" : 46.9774785, "lng" : 15.6212531 }, "southwest" : { "lat" : 46.9746073, "lng" : 15.6144114 } }, "copyrights" : "Kartendaten © 2018 Google", "legs" : [ { "distance" : { "text" : "0,8 km", "value" : 811 }, "duration" : { "text" : "1 Minute", "value" : 81 }, "end_address" : "Guggitz Bergweg 54, 8081 Pirching am Traubenberg, Österreich", "end_location" : { "lat" : 46.9752518, "lng" : 15.6144114 }, "start_address" : "Kirchbacher Str. 99-122, 8081, Österreich", "start_location" : { "lat" : 46.9746073, "lng" : 15.6212531 }, "steps" : [ { "distance" : { "text" : "0,4 km", "value" : 361 }, "duration" : { "text" : "1 Minute", "value" : 20 }, "end_location" : { "lat" : 46.9774785, "lng" : 15.61923 }, "html_instructions" : "Auf u003cbu003eKirchbacher Str.u003c/bu003e/u003cbu003eB73u003c/bu003e nach u003cbu003eNordwestenu003c/bu003e Richtung u003cbu003eGuggitz Bergwegu003c/bu003e starten", "polyline" : { "points" : "ivu}Gy_j~ASR]RuBh@{@Rg@PGBc@Ra@TUN_@V{AlAY^MPMRQ\\IR" }, "start_location" : { "lat" : 46.9746073, "lng" : 15.6212531 }, "travel_mode" : "DRIVING" }, { "distance" : { "text" : "0,4 km", "value" : 450 }, "duration" : { "text" : "1 Minute", "value" : 61 }, "end_location" : { "lat" : 46.9752518, "lng" : 15.6144114 }, "html_instructions" : "u003cbu003eLinksu003c/bu003e abbiegen auf u003cbu003eGuggitz Bergwegu003c/bu003e", "maneuver" : "turn-left", "polyline" : { "points" : "ghv}Gesi~ALh@X`CzAfHp@hBfA|BJPnAzBr@fAPT\\Z" }, "start_location" : { "lat" : 46.9774785, "lng" : 15.61923 }, "travel_mode" : "DRIVING" } ], "traffic_speed_entry" : [], "via_waypoint" : [] } ], "overview_polyline" : { "points" : "ivu}Gy_j~ASR]RqD|@o@TeAh@u@f@{AlAY^[d@[p@Lh@X`CzAfHp@hBrAnCnAzBr@fAn@p@" }, "summary" : "Kirchbacher Str./B73 und Guggitz Bergweg", "warnings" : [], "waypoint_order" : [] } ], "status" : "OK" }See the algorithm of Google to encode this, so it should be possible to decode the string when dooing the step in the other direction:https://developers.google.com/maps/documentation/utilities/polylinealgorithmOn this page is an example of a JavaScript code to decode the polyline string: https://stackoverflow.com/questions/40877840/google-maps-api-draw-a-route-using-points-of-a-polylineBut unfortunately it's not possible to include the JavaScript library in the JavaScriptCaller:https://maps.googleapis.com/maps/api/js?libraries=geometryBecause JavaScript seems not to be fully supported by the JavaScriptCaller, it would be great to do the decoding via GeometryExtractor or GeometryReplacer.There are already a lot of encodings (GeometryExtractor > Parameters > Geometry Encoding):https://docs.safe.com/fme/2017.1/html/FME_Desktop_Documentation/FME_Transformers/Transformers/geometryextractor.htmThe "Google Maps Polyline Decoder" should be added.

Central repository for Custom Transformers used by Desktop and ServerArchived

Right now, there is no ideal configuration to store a Custom Transformer exactly one time and use it within FME Desktop and FME Server as a Linked Custom Transformer. There are several workarounds:1. Create Shared FME Folder --> use the folder within the Workbench --> upload Custom Transformers to FME ServerThis works, but in fact it duplicates the Custom Transformer on each FME Server (Development, Staging, Production). When creating a new version of the Custom Transformer, it has to be uploaded to all FME Servers again.2. Create network share and reference it as a Custom Resource within FME ServerUnfortunately, the FME Server Engine doesn't scan Custom Resources, so a Workspace with a Linked Custom Transformer from the network share will crash in FME Server.3. Share the Engine Resource Folder of FME ServerThis would also work, but I don't like the idea of exposing some server internal folder by sharing it to the network. Furthermore, it doesn't solve the problem of sharing a Custom Transformer across different FME Servers (Development, Staging, Production), because each instance would have its own Engine Resource Folder which would lead to multiple Shared FME Folders within Workbench.4. Use Embedded Custom TransformersNot really an option because it is impossible to use exactly the same Custom Transformer per definition.Thus, FME Server and Desktop should be able to reference any arbitrary network folder as a source for Custom Transformers.