[Liblas-devel] liblas writing proj4 string (using python api)
Howard Butler
hobu.inc at gmail.com
Thu Jun 4 12:12:42 EDT 2009
On Jun 3, 2009, at 12:31 PM, Wes Toews wrote:
> hi, I'm attempting to write the following python code to change the
> projection information stored in a las 1.1 file in the manner of a
> demo python script on the liblas site.
> setup is python2.5, liblas 1.0, using the PyPI python bindings. I'm
> also not a C programmer.
Hmm... I have not updated the examples since releasing the libLAS 1.2
release. libLAS 1.2 changed things quite significantly in the area of
spatial reference systems.
The basic problem is you cannot change the values of header items in-
place when doing so would change the size of the header. You must
create a new file if this has to happen. Because the coordinate
system is stored in variable length records, changing them does indeed
change the size of the header and therefore requires that you rewrite
the file... (note that the code below is for using the 1.2 version of
libLAS)
> from liblas import file, srs, header
>
> f = file.File('srs.las')
>
> # this makes a copy of the header, it is not a reference
> h = f.header
>
> proj4 = '+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333334
> +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0001016001 +y_0=0
> +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_def'
>
> s = srs.SRS()
> s.proj4= proj4
>
> h.srs = s
>
> new_file = file.File('newfile.las',mode='w', header=h)
> for p in f:
> new_file.write(p)
>
> f.close()
> new_file.close()
Feel free to register for Trac and update the example(s) with code
that you get working with :)
>
> this returns LASException: LASError in "LASWriter_Create": PROJ.4
> string is invalid or unsupported
>
This error is related to the issue, and it likely means that proj4
cannot find its data files to look up values. Which libLAS Python
binaries are you using? The ones from PyPI, or the ones from
OSGeo4W? If you are using the ones from PyPI, I don't think they
include the proj4 data files. A quick way to get those would be to
install OSGeo4W and then set an environment variable PROJ_LIB to point
at c:\osgeo4w\share\proj
Hope this helps,
Howard
More information about the Liblas-devel
mailing list