Monday, January 29, 2018

Display CSV (with WKT geometry field) files on Google Maps with this Mapplet

If you want to display a Comma Separated Values (CSV) file with an embedded geometry field in Well Known Text (WKT) format with just an Internet browser, then this Mapplet may be useful to you. Just go to this url https://dominoc925-pages.appspot.com/mapplets/vcsvfile.html with any modern browser such as Chrome, or FireFox. All the processing is done within your browser, that is the CSV file is never uploaded to a server for processing.


  1. To load a CSV file, click on the Import CSV button (in blue color) as shown in the screenshot below. 



    The Import Comma Separated Values (CSV) file dialog box appears.

  2. To load in a CSV file from a local drive, click the Choose File button. Then browse and select a CSV file as shown below.



    Note: You can also copy and paste WKT text into the CSV file field's text area. Or click the Use Sample Data drop up button to load demo WKT data into the text area.

  3. Click Open.

    The file is read and displayed in the text area below the Choose File button. The WKT Geometry column button is populated with the header fields from the CSV file.


    Note: If necessary, choose an appropriate Coordinate System and projection.
  4. Click Start Import.

    The CSV file is loaded and rendered as overlays on the Google Maps backdrop. The name of the file is added to a CSV files combo box.

  5. Optional. Click on the CSV Command drop up button and choose a command to apply to the current CSV layer.


    Fit - Display the current CSV layer within the map
    Fit All - Display all loaded CSV layers within the map
    Toggle display - Toggle the CSV layer display on or off
    Display off - Don't display the current CSV layer
    Display on - Display the current CSV layer
    Remove layer - Unload the current CSV layer

Monday, January 22, 2018

Using QGIS to export CSV files with Well Known Text geometry

QGIS can export feature layers as comma separated values (*.CSV) files with a geometry column in  Well Known Text (WKT) format. This can be very convenient if you want to exchange a small amount of data from one GIS system to another GIS system.

To save a vector feature layer to a WKT CSV file, do the following:

  1. In the legend pane of QGIS, select a layer to export, e.g. forest. Then press the right click of the mouse.

    A pop up menu appears.

  2. In the pop up menu, choose Save As.
  3. The Save vector layer as dialog box appears.


  4. In the Format combo box, choose Comma Separated Values (CSV). In the File name field, click the  Browse button and type in the output file name, e.g. forest.csv.


  5. In the Layer Options group box's GEOMETRY combo box, choose AS_WKT. Click OK.

    The selected vector layer is exported out as a CSV file with a geometry field as WKT format as shown below in a spread sheet.

Monday, January 15, 2018

displaz - A small but fast LiDAR las file viewer

I'm happy with this LiDAR las file viewer displaz I stumbled upon while doing some searching on Google. It's free, open-source, no-frills, fast, and relatively easy to use - just perfect to drag and drop some las files for a quick look. It can be downloaded from this web site http://c42f.github.io/displaz/.

The following are some sample screenshots of the viewer.
  1. Upon start up, the viewer shows a blank view with a shader parameters and Log or Datasets panes on the right.



    Note: The points are colored according to intensity values. This can be changed by choosing an alternative coloring method in the Shader parameters pane
    .
  2. Las files and be opened by simply dragging it(them) and dropping onto the application window from the operating system's file managers.


    Note: once opened, the file(s) are listed in the Datasets pane. To view the point cloud from a different orientation, drag and move the mouse left button. To zoom, roll the mouse wheel.
  3. This is a little confusing at first, but to pan or move the view, you have to press the middle button of the mouse to center the view around the chosen point. At the same time, it will show the attributes of the chosen point in the Log pane, as shown below.


  4. Finally, to unload a las file, select one or more files in the Datasets pane and press the DELETE button on the keyboard.



Monday, January 8, 2018

Getting FugroViewer to run in Ubuntu 16.04

I wanted to try running the free but not open source Lidar viewer from Fugro on Ubuntu. FugroViewer can be downloaded from https://www.fugro.com/about-fugro/our-expertise/technology/fugroviewer.

Since FugroViewer is a Windows only application, I had to use Wine to install and run it. I was successful in getting it to run and the following steps illustrate how to set up, install and run FugroViewer on Ubuntu.

Install Wine

  1. In Ubuntu, open up a terminal.
  2. At the command prompt, type in the following command to download a key. Press RETURN.

    $ wget https://dl.winehq.org/wine-builds/Release.key

    The file Release.key is downloaded.

  3. Next, add the key to Ubuntu. Type in the admin password when prompted.

    $ sudo apt-key add Release.key


  4. Now add in the Wine repository to Ubuntu by entering the following command:

    $ sudo apt-add-repository 'https://dl.winehq.org/wine-builds/ubuntu/'


  5. At the command prompt, type in the command:

    $ sudo apt-get update

  6. Finally, install Wine with the following command.

    $ sudo apt-get install wine


Install FugroViewer

Once Wine is installed, it can be used to run the FugroViewer installer (which must be downloaded from the Fugro web site https://www.fugro.com/about-fugro/our-expertise/technology/fugroviewer previously).

  1.  Using a File Manager in Ubuntu, browse to the location of the downloaded FugroViewer installer. Double click on the file or press mouse right click and choose Open with Wine Windows Program.


    The Fugro Viewer Setup wizard appears.
  2. Complete the installation by following the Fugro Viewer Setup wizard.


Running FugroViewer
  1. On the desktop, click the Dash button on the top right. Then type in fugro.

    The FugroViewer application icon is shown.

  2. Click on the FugroViewer icon.

    The FugroViewer application starts up.
  3. Now load in one or more LAS files.

    The LAS file is displayed.

Monday, December 11, 2017

Generating LiDAR flight line boundaries with PDAL's tindex

A common task after an airborne LiDAR data collection is to determine the boundaries of the LiDAR LAS file strips, to visualize where they cover approximately. The screenshot below shows an example of how these LiDAR strips look like, colored by elevation. 
Example of LiDAR data strips
The boundaries can be generated in various formats using PDAL's tindex command. Using this command is simple, as shown in the example steps below:

  1. Open up the OSGeo4W Command Prompt. Change the directory to the folder containing the *.laz files.

    A folder containing LiDAR *.las file strips

    1. At the prompt, type in the command:

      C:\> pdal tindex boundary.sqlite *.laz -f SQLite --lyr_name "bnd"

      where boundary.sqlite is the output file
      *.laz specifies the input files using a wildcard
      -f SQLite is the output format
      --lyr_name "bnd" specifies the layer name to append to the output name
    2. Press RETURN.

      The boundaries are generated.

    3. Optional. After the process is completed, drag and drop the output file e.g. boundary.sqlite onto QGIS.

      The LiDAR strips boundary_bnd_polygon are displayed.


      The output boundaries have the following attributes as shown below.



    Monday, August 7, 2017

    Android Studio Emulator: How I resolved a Google Maps SupportMapFragment GLThread exception

    While attempting to open up a Google Maps SupportMapFragment in the Android Studio Emulator, the Activity crashed with the following error messages:

    [ 08-07 00:50:44.423  3266: 3523 W/         ]
                                                                         Unrecognized GLES max version string in extensions: ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 
    08-07 00:50:44.429 3266-3523/com.dom925.volcamr.nz E/EGL_emulation: rcCreateContext returned 0
    08-07 00:50:44.429 3266-3523/com.dom925.volcamr.nz E/EGL_emulation: tid 3523: eglCreateContext(1434): error 0x3003 (EGL_BAD_ALLOC)
                                                                        
                                                                        --------- beginning of crash
    08-07 00:50:44.429 3266-3523/com.dom925.volcamr.nz E/AndroidRuntime: FATAL EXCEPTION: GLThread 276
                                                                         Process: com.dom925.volcamr.nz, PID: 3266
                                                                         java.lang.RuntimeException: createContext failed: 12291
                                                                             at com.google.maps.api.android.lib6.gmm6.vector.az.a(:com.google.android.gms.DynamiteModulesB:29)
                                                                             at com.google.maps.api.android.lib6.gmm6.vector.ba.f(:com.google.android.gms.DynamiteModulesB:158)
                                                                             at com.google.maps.api.android.lib6.gmm6.vector.ba.run(:com.google.android.gms.DynamiteModulesB:11)
    

    The same Android app has no issue running on a real handset.

    After some fiddling around with the emulator settings, the problem was resolved by changing the emulator's graphics emulated performance from automatic to either Hardware GLES 2.0 or Software GLES 2.0 as shown below.

    Monday, July 31, 2017

    PDAL: Colorize a LAS file with multiple GeoTiff images

    A LiDAR LAS file may not necessarily share the same bounds as a single raster image file. More often the case, to cover the LAS file more than one raster image file is needed. One way to resolve this is to merge all the raster images into a single mosaic file. Another way may be to keep the raster images as they are and load them in one by one (just-in-time fashion) to colorize the LAS file. This workflow is a little more complicated but it can be done using PDAL's pipeline processing mechanism.

    In this post, PDAL will be used to colorize a LAS file using multiple tiles of GeoTIFF image files - four to be exact. You just need to create a pipeline that loads in the LAS file, apply the RGB values from each image file individually and write the colored points into an output LAS file. The following sections illustrate this workflow.

    Here's how the source LAS and GeoTIFF files look like.
    The source LiDAR LAS file displayed by elevation
    The source GeoTIFF raster image files
    Create a PDAL pipeline JSON file
    1. Using a text editor, type in the JSON syntax to colorize a LAS file using PDAL's colorization filter, as shown below.


      where
      uncompahgre.laz is the source LAS file,
      tile0.tif, tile1.tif, tile2.tif and tile3.tif are the source image files,
      and color.laz is the output LAS file name

    2. Save the text into a file e.g. colorLas.json.
    A sample pipeline JSON is show in the listing below.

    {
        "pipeline": [
            "uncompahgre.laz",
            {
                "type": "filters.colorization",
                "raster": "tile0.tif"
            },
            {
                "type": "filters.colorization",
                "raster": "tile1.tif"
            },
            {
                "type": "filters.colorization",
                "raster": "tile2.tif"
            },
            {
                "type": "filters.colorization",
                "raster": "tile3.tif"
            },
            {
                "type": "writers.las",
                "compression": "true",
                "minor_version": "2",
                "dataformat_id": "3",
                "filename":"color.laz"
            }
        ]
    }
    

    Run the colorization process

    1. Open up a OSGeo4W Command Prompt.
    2. At the prompt, type in the pdal pipeline command:

      c:\> pdal pipeline colorLas.json
      where colorLas.json is the pipeline JSON file created in the previous section.
    3. Run the command.

      Processing messages appear.


      The output colorized LAS file color.laz is generated.
    4. Optional. Display the resultant colored LAS file in a LAS Viewer.