LizardTech.com

Archive for the ‘SDK’ Category

MG4 support in LIDAR Analyst

Monday, May 24th, 2010

Last July we unveiled the MrSID® Generation 4 Decode SDK to coincide with our release of the first groundbreaking version of LiDAR Compressor™ software. The new version of the MrSID format (MG4) supports LiDAR compression. We released a plug-in for using MG4 in ArcGIS 3D Analyst last October and unveiled our own MG4 Decode tool for decoding MG4 back out to LAS or ASCII text format earlier this year, but we’ve obviously been just as eager to see third parties use the SDK to integrate MG4 support into their own products.

Late last year, Merrick & Company and Global Mapper Software announced support for MG4 in their products, MARS® (Merrick Advanced Remote Sensing) software and Global Mapper 11.01. We were very excited about those early integrations.

Last week another important integration of the MG4 technology was announced, this time by Overwatch, an operating unit of Textron Systems, a provider of imagery and geospatial solutions to Homeland Security, the Department of Defense and the intelligence and forestry communities. Overwatch is the maker of LIDAR Analyst, a plug-in for ArcGIS and ERDAS IMAGINE that provides tools for automatically extracting bare earth terrain, 3D buildings, trees and forests, contour lines, and terrain characteristics.

Overwatch logo

LIDAR Analyst is used for feature extraction by user groups requiring high-resolution terrain information. With the release of version 5.0, LIDAR Analyst customers will be able to process LiDAR data that has been compressed using LizardTech’s LiDAR Compressor.

We’re excited because, as our director of marketing Jon notes, our customers in the Department of Defense and elsewhere have frequently requested MG4 support in LIDAR Analyst, and this integration will provide them with the ability to efficiently compress their LiDAR files and use them in one of their most commonly used applications.

Overwatch is excited because, according to LIDAR Analyst’s product manager Matt Morris, “The MrSID format is best in class for raster imagery compression and we are quite pleased with LizardTech’s specific innovations in point cloud compression.”

We’re blushing, but it’s true.

MrSID Generation 4 gains support

Friday, November 20th, 2009

We’re pretty excited. Last week we announced that version 11.01 of Global Mapper supports LizardTech™ MrSID™ Generation 4 (MG4) among its many supported elevation formats. Mapmakers who use Global Mapper will now benefit from being able to load point clouds compressed using LizardTech Lidar Compressor™ into Global Mapper.

Earlier this week we were able to announce that Merrick & Company has similarly integrated MG4 support into its MARS® (Merrick Advanced Remote Sensing) software application. Users of MARS 6.0, available now, can load MG4 files into MARS for visualizing and managing LiDAR terrain datasets.

How are they doing this? They’re using LizardTech’s MrSID Generation 4 Decode SDK, a free download.

Oh, and we should remind any ArcGIS 3D Analyst users that MG4 files are supported via LizardTech’s free MrSID Plug-in for ArcGIS 3D Analyst (http://www.lizardtech.com/download/dl_options.php?page=plugins), so you can work with MG4 files the same way you work with LAS files to create contours and surfaces.

The way we feel about all this is: The more the merrier.

Calling the SDK from C#

Tuesday, October 14th, 2008

Because we support multiple platforms (Windows, Solaris, Linux, Mac), our Decode SDK is written in C++.  Some years ago, our C++ APIs used to regularly lead to the question, “do you support Java?”.  The answer was always sorry, no, we’re not a Java shop and we don’t have any Java bindings… But we’ve always provided a relatively simple C API which we claimed could be wrapped using JNI, and for the most part that made people happy.

For the past year or so, though, all the Java requests seem to have disappeared, only to be replaced by the question, “do you support .NET?”  This usually means “do you have any C# bindings?”, although we do get the occasional VB.NET request.  Our response has been sorry, no, we’re not a C# shop and we don’t have any .NET bindings… But, again, we’ve told people that “it ought to be fairly easy to call out to our C API using P/Invoke, .NET’s Interop functionality”.

Well, recently some of the engineers here at LizardTech HQ have started programming in C# for reals, and so now we actually have just enough in-house expertise on the question to be able to provide some additional help on this one.  While the current DSDK release doesn’t provide any C# bindings, we have put together a very simple example app that shows how to use Interop to access the C API.

The code is, at heart, remarkably simple.  First, you declare your C functions so they can be accessed from within your C# class, like so:

      [DllImport("lti_dsdk_cdll.dll")]
      static extern int ltic_openMrSIDImageFile(out
            IntPtr image, string fileName); 

      [DllImport("lti_dsdk_cdll.dll")]
      static extern uint ltic_getWidth(IntPtr image);

Then, you close your eyes, tap your ruby slippers together three times, and innocently call the functions just like they were real functions:

      // this is essentially our void* pointer
      IntPtr image = IntPtr.Zero;
      string infile = "..."; 

      sts = ltic_openMrSIDImageFile(out image, infile);
      ...
      uint width = ltic_getWidth(image);
      ...

You can download the full example from here.

Yes, we know, it’d be nice to provide interop support for the C++ classes so as to give access to the whole SDK… but quite frankly, we’re not sure the market demand is really there yet.  At the very least, though, we’ll try to include interop support for the C API in the next release of the SDK.

Keep those cards and letters coming.

-mpg