Convert 3D geotiff file (with latitude, longitude and elevation) data to a 2D image pixels - gis

How do you convert 3D data from a Geotiff file (that has longitude, latitude and elevation) to a 2D image. So, can I have a transformation matrix that would incorporate 3D data and using that transformation matrix, I can convert that to my 2D image.
I have been looking into the rasterio library but it only takes into account the lat, lon but no elevation.

Related

different geometry in SVF and SVF2

We have an IFC file that is converted in SVF and SVF2.
We noticed that the same beam has different geometry in both formats (see picture
The SVF2 geometry is wrong (the beam is rotated or mirrored).
I will send the IFC to forge (dot) help (at) autodesk (dot) com
SVF2 barely reduces the number of geometry instances for this model:
SVF: 18015 geometries
SVF2: 17037 geometries
Since SVF2 loads every geometry individually via a websocket, it takes much longer if the number of instances isn't much smaller compared to SVF.
Add an extra querying string disableWebSocket=true to your website URL e.g. http://localhost:8000?disableWebSocket=true

Forge is normalising obj file's coordinates

I am using forge to view obj file, but it is normalising the obj file's coordinates w.r.t centre of the screen. Due to which at a later point in time when I am rendering the custom THREE.js objects at original coordinate they are very very far apart from the model.
I am seeking one of the two solutions
Either I get a forge api to transform the custom object's coordinates the same way forge did for initial model, or
Forge displays the model in the correct position without normalising the coordinates but focuses camera to the model on initial load of the screen.
Forge typically moves 3D designs to the origin (to avoid floating point precision issues) but it stores the original offset in the globalOffset property in the model metadata. You could either:
Take the globalOffset value into account when inserting the custom three.js objects, or
Load the model with globalOffset set to an empty vector (new THREE.Vector3(0.0, 0.0, 0.0)), as explained in https://forge.autodesk.com/blog/multi-model-refresher.

Values for volume, area and length in Autodesk Forge Model Derivative API

I'm using Forge to extract data from Revit models (transformed to .nwc). I call
GET /modelderivative/v2/designdata/{urn}/metadata/{guid}/properties
to get all properties of my model. The problem is that for some reason values for volume, area and length for all Revit objects are now in the format "0.009 ft^3", while before they all were just numbers. What can be the reason for this? Is this an API change or the model is saved with some special parameters, etc.?
Yes, this is a change because previously you could not tell the unit of any of the values. Now it's showing the values as you find them in the Viewer as well.

Is it safe to use `PolyUtil.encode()` to save important Polygons on Google Maps?

I'm working with a maps application, One of the functionality of this app is to allow the user to draw a polygon on the map for specific task.
This Polygon will be save on our servers for later use.
I managed to encode the points and produce an encoded string path to reduce the size of storing and transferring the polygon from and to the server.
String path = PolyUtil.encode(latLngs); // Android
But I read on Google developer webiste that:
Polyline encoding is a lossy compression algorithm that allows you to store a series of coordinates as a single string. Point coordinates are encoded using signed values. If you only have a few static points, you may also wish to use the interactive polyline encoding utility.
I get a shock when read this :( because I use encodedPath in more than one App.
What does they mean by lossy compression ?
So is it safe to use this type for storing users' polygons ?
I mean: is it true that every decode of an encoded string will produce the same points ?
Or it is better to store the polygon on the server as multi points ?
Thanks for any help.
If you take a look at the encode method that is used to encode a sequence of latitude/longitudes on the Google Maps Android API Utility Library you will see that it rounds the fifth decimal place:
long lat = Math.round(point.latitude * 1e5);
long lng = Math.round(point.longitude * 1e5);
From the Wikipedia, 0.00001 decimal degrees is equivalent to 1.1132 meters at equator.
Anyway, take into account that this is the behaviour now, and it's transparent to you, so you may not notice if the implementation changes to allow more precision or if the precision is more truncated. Thus, if the precision of the coordinates is important to you, you may want to store the coordinates as a list of points on your system.

Argis .NET WP8.1 draw bitmap layer

So, my goal is to generate heatmap byte array from C++ code, pass it to C#. Then create BitmapImage (no Bitmap in WP8.1 SDK) from that array and render it as a layer in Arcgis.
Is it possible to render bitmap overlay in arcgis.net?
Thanks
I didnt found functionality to create bitmap from pixel data array. Instead i used lodepng in C++ to create png and returned that to C# as byte array.
In ArcGis i used GraphicsLayer and draw that heatmap png as PictureMarker.