1
>>> from liblas import srs
2
>>> from liblas import point
3
>>> from liblas import header
9
>>> s.proj4 = '+proj=utm +zone=15 +datum=WGS84 +units=m +no_defs'
10
>>> s.proj4 == '+proj=utm +zone=15 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '
14
>>> s.set_userinput('EPSG:4326')
16
>>> s.proj4 == '+proj=longlat +datum=WGS84 +no_defs '
19
>>> from liblas import file
20
>>> f = file.File('../test/data/1.2_3.las',mode='r')
22
>>> s.wkt == """PROJCS["NAD83 / UTM zone 15N",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.2572221010002,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4269"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-93],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","26915"]]"""
26
>>> s2.wkt = """GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]"""
35
>>> s2.GetVLR(0).recordlength
45
# -93.3515625902 41.5771483954
47
>>> def new_offset(old_scale, new_scale, old_offset, x):
48
... return (new_scale*(x - old_offset) - old_scale*x)/(-1.0*old_scale)
50
>>> utm_wkt = """PROJCS["NAD83 / UTM zone 15N",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.2572221010002,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4269"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-93],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","26915"]]"""
52
>>> dd_wkt = """GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]"""
56
>>> s_utm.wkt = utm_wkt
58
>>> f = file.File('../test/data/1.2_3.las',mode='r')
59
>>> dd_header = liblas.header.Header(handle=f.header.handle,copy=True)
60
>>> utm_header = liblas.header.Header(handle=f.header.handle,copy=True)
68
# >>> new_offset(0.01, 0.0001, 0.0, 470692.44)
69
# >>> utm_header.offset = [offset+1.0/0.000001 for offset in utm_header.offset]
70
# >>> utm_header.offset
71
[1000000.0, 1000000.0, 1000000.0]
72
# >>> utm_header.scale = [0.000001,0.000001,0.000001]
73
>>> utm_header.srs = s_utm
75
# >>> dd_header.scale = [0.000001,0.000001,0.000001]
76
>>> dd_header.srs = s_dd
78
>>> f = file.File('../test/data/1.2_3.las',mode='r', header = utm_header)
79
>>> f.header.data_offset
84
>>> origx, origy = p.x, p.y
86
(470692.44, 4602888.9000000004)
91
We only get truncated values because our header scale
95
(-93.350000000000009, 41.579999999999998)
98
# (-93.351562590199833, 41.577148395415108)
102
>>> f_project = file.File('junk_srs_project.las',mode='w',header=dd_header)
104
>>> p.header = dd_header
106
(-93.350000000000009, 41.579999999999998)
108
>>> dd_header.srs.proj4
109
'+proj=longlat +datum=WGS84 +no_defs '
110
>>> f_project.write(p);f_project.write(p);f_project.write(p)
111
>>> f_project.close()
113
>>> f3 = file.File('junk_srs_project.las')
114
>>> f3.header.data_offset
117
>>> s_utm = srs.SRS()
118
>>> s_utm.wkt = utm_wkt
120
>>> int(round(p3.x)), int(round(p3.y))
123
>>> int(round(p3.x)), int(round(p3.y))
127
>>> os.remove('junk_srs_project.las')
130
>>> f = file.File('../test/data/srs_vertcs.las',mode='r')
132
>>> s.get_wkt_compoundok() == """COMPD_CS["unknown",PROJCS["WGS 84 / UTM zone 17N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-81],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32617"]],VERT_CS["NAVD88 height",VERT_DATUM["North American Vertical Datum 1988",2005,AUTHORITY["EPSG","5103"],EXTENSION["PROJ4_GRIDS","g2003conus.gtx,g2003alaska.gtx,g2003h01.gtx,g2003p01.gtx"]],AXIS["Up",UP],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","5703"]]]"""
136
>>> s2.wkt = """PROJCS["WGS 84 / UTM zone 17N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-81],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32617"]]"""
137
>>> s2.set_verticalcs( 5703, 'abc', 5103, 9001 )
139
>>> s2.get_wkt_compoundok()
140
'COMPD_CS["unknown",PROJCS["WGS 84 / UTM zone 17N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-81],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32617"]],VERT_CS["NAVD88 height",VERT_DATUM["North American Vertical Datum 1988",2005,AUTHORITY["EPSG","5103"],EXTENSION["PROJ4_GRIDS","g2003conus.gtx,g2003alaska.gtx,g2003h01.gtx,g2003p01.gtx"]],AXIS["Up",UP],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","5703"]]]'