Tuesday, September 18, 2018

State of TouchTerrain as of version 1.21

State of TouchTerrain 

Chris Harding, Sep. 18, 2018


Tell us about your project

Despite it relative simplicity TouchTerrain continues to grow in popularity since it went live in March 2017. At least that's what Google Analytics tells me. Besides that, we've heard from a number of people using it for cool projects ... but we only find out about those projects when something is broken :)

While that feedback is vital to improve (or fix) things, we would be delighted to hear from any cool project you're running, just so we can feel better (and also to have some material for justifying the ongoing development, slow it may be ...). So, if you're using the 3D models for say academic research, or teaching visually impaired students or presentations in a museum, and you feel inclined to say thanks to us, drop us a note.

Development summary (up to v.1.21)

Here's a quick summary of what I fixed/added since version 1.14
  1. Added region from kml file: The Web app has a Set Box from polygon in KML file button. Digitize an area as a polygon (some sort of box) in Google Earth and save it as a kml file (not kmz). Use the button to upload your kml file and the app will fill the top right and bottom left coordinates with a rectangle surrounding your polygon and fly you to this area.
  2.  Fixed aliasing artifacts (web and stand-alone): At least two users brought this issue to my attention, which manifested as subtle line patterns across the terrain. Even when noticeable in a 3D viewer,  usually they would not show up in the print (due to the 3D printing process). I guessed (correctly, as it turned out) that it was a resampling artifact but was initially not sure where in the process it was introduced. After some poking around I found that Google Earth Engine, which I tell to downsample and project the raster before downloading it for processing, is using nearest-neightbor resampling by default, which leads to these artifacts. Luckily, it's easy to tell it to use a better algorithm, either bi-cubic or bi-linear (which I'm using now). With this, the artifacts seem to have gone.
     
  3. Use full resolution (printres = -1) (stand-alone version with local raster files only): Unlike the web version, using local raster files with the stand-alone version does not yet have an easy way to use bi-linear interpolation. The current method,  uses some numpy trickery to performs the equivalent to nearest-neightbor resampling, again with the potential for aliasing artifacts. Until I find time to add better resampling I've added a way to create 3D models from the resolution of the raster file, i.e. with no down-sampling. This won't show any artifacts but may result in very large meshes.
  4. Added DEM to zipped folder: The geotiff I downlaod from Google Earth Engine is now included in the zipped folder you download from TouchTerrain, it's always called DEM.tif.


Finally a FYI:  you may encounter a dialog box with Google telling you "This page can't load Google Maps correctly". This happens because our server has been visited by too many users and Google recently (July 2018), requires that we pay them for usage over this limit. To be clear, this will only happen if we've exceeded the allowed free quota for the day (I think) and I've encountered it only once, late a night. If you get this dialog, press OK and move on. For our app, even the "ugly" version of the streetmap is usable for finding the region you want to print. The hillshade map is not affected by this.

Friday, November 3, 2017

TouchTerrain version 1.14 is out

Web app changes:

  • v1.14 fixed the Server returned HTTP code: 404 error. 
  • Levi and Shane also changed the apache config settings which should make the  'NoneType' object has no attribute 'route'  error less likely.  Let us know if its still happening so we can learn more about it.
  • The Internal Server error also seem to have gone. (Report if you get it)

Stand alone version changes (see  Github repository)

  • Instead of a web interface, the Stand alone version gets all its parameters (area coordinates, DEM source,  3D print settings) via a JSON file. To get DEM data from Google Earth Engine (like the web app does), you need to set up a GEE account.
  • v1.14 adds the option to use your own DEM raster file (geotiff, img, etc.) instead. In this case, no Google Earth Engine is required!
  • Here's an example JSON file that processes a geotiff called pyramid.tif (my test file):
  • "CPU_cores_to_use": 1, 
    "DEM_name": "USGS/NED", 
    "basethick": 2,  
    "fileformat": "STLb", 
    "importedDEM": "pyramid.tif", 
    "ntilesx": 1, 
    "ntilesy": 1, 
    "printres": 1, 
    "tile_centered": true, 
    "tilewidth": 120,  
    "zip_file_name": "pyramid", 
    "zscale": 0.5
    
  • If there's interest, we could add this to the web version as well, so you could upload your own DEM file. 

Friday, October 27, 2017

Errors with the current version (v.1.09): 

We are aware of the following errors and are working to fix them. Python error message after pressing Start: Server returned HTTP code: 404 or 'NoneType' object has no attribute 'route'  or   (after a while):  Internal Server Error

Sometimes going back and trying again may make it work but it's clearly super annoying.

If you want to be notified after we've fixed it, leave a comment.

If you desperately  need a model now contact us as Geofablab@gmail.com and we can probably create it for you. 

Thanks for your patience!