My web app (flyxc.app) is used by paraglider pilots to plan their flights, visualize their flights and live tracking.
The 2D is based on Google Maps and display airspaces using vector tiles and a custom renderer.
I would love to add airspaces to the 3D view which is an ArcGIS SceneView.
Airspaces are simple[1] 3D volumes. It should be possible to create an Indexed 3d Scene (I3S) with the airspaces and add that Scene Layer to the SceneView.
The problem is that I can not figure out a way to generate this I3S layer. The spec is public (OGC) but I can not find any lib able to generate I3S. One solution might be to use ArcGIS Pro but it is a paid software and I am not even sure if it can do it ?
Does somebody here have experience with generating custom I3S ?
Some details:
I get the airspaces in OpenAir format and convert them to GeoJSON in order to create the 2D vector tiles. Given that I already have OpenAir/GeoJSON I can convert to any common format.
[1] Airspaces are mostly very simple volumes defined by an outline, a floor and a ceiling. There are a few less simple airspaces where the floor / ceiling elevation is relative to ground but it should not be a problem for I3S.
Check out the FAA OpenData site ( https://udds-faa.opendata.arcgis.com/ ) as it might already contain the data you're looking for as services that could be brought into a SceneView.
Thanks for the link John. That's an interesting site.
However it looks like it's US only and 2D only. I am looking to generate this layer in 3D and worldwide.
Correct, ideally you'd use Pro to generate the 3D services. I don't know about creating I3S, but since this was posted to the JS API community here's an alternative: you could try using the JS API to turn your existing 2D data into a 3D visualization. For this use-case you'd have to adjust the layer/features/symbol properties based on available attributes, and Arcade can help you do just that. Since you already have the data as GeoJSON you could try first adding the data via GeoJSONLayer to a SceneView. Then you could try to adjust the 3D offset and extrusion for each feature using the JS API. Check out the elevationInfo.featureExpressionInfo that will help you set the elevation offset per feature, and then use a size VisualVariable to set the extrusion on a per feature basis. Not sure if this will work for your data, but it might be worth a try. For smaller datasets this might be ok, but probably not recommend for very large datasets; managed services are best for that use case. Here's an old test app that shows some of these concepts; it was recently updated to 4.18 to test out the new OIT functionality:
https://apl.esri.com/jg/AirspaceUS/index.html
https://github.com/jgrayson-apl/AirspaceUS/blob/master/app/Main.js#L440
Thanks John.
Using this technique was actually my first idea before I realized SceneLayer/I3S does just the same but in a better way.
I think using SceneLayer would solve 2 problems:
It seems like Arcgis PRO is $100/y for individual so I might give it a try to generate a slpk instead of spending many hours trying to tune a manual solution. I need to double check if everything needed would be included in the subscription first.
Thanks for your help