Skip to content

Commit

Permalink
Add nc_dittt/ grids for New Caledonia (fixes #14)
Browse files Browse the repository at this point in the history
  • Loading branch information
rouault committed Mar 10, 2020
1 parent 13a7624 commit 57f9efa
Show file tree
Hide file tree
Showing 11 changed files with 230 additions and 10 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ set(CPACK_SOURCE_INSTALLED_DIRECTORIES
"${CMAKE_CURRENT_SOURCE_DIR}/eur_nkg/" "."
"${CMAKE_CURRENT_SOURCE_DIR}/fr_ign/" "."
"${CMAKE_CURRENT_SOURCE_DIR}/is_lmi/" "."
"${CMAKE_CURRENT_SOURCE_DIR}/nc_dittt/" "."
"${CMAKE_CURRENT_SOURCE_DIR}/nl_nsgi/" "."
"${CMAKE_CURRENT_SOURCE_DIR}/nz_linz/" "."
"${CMAKE_CURRENT_SOURCE_DIR}/pt_dgt/" "."
Expand Down
6 changes: 6 additions & 0 deletions agency.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,12 @@
"agency":"National Land Survey of Iceland",
"url": "https://atlas.lmi.is/LmiData/index.php?id=626468364600"
},
{
"id": "nc_dittt",
"country": "New Caledonia",
"agency":"Gouvernement de Nouvelle Calédonie - DITTT",
"url": "https://dittt.gouv.nc/circe-pour-la-nouvelle-caledonie"
},
{
"id": "nl_nsgi",
"country": "Netherlands",
Expand Down
4 changes: 4 additions & 0 deletions copyright_and_licenses.csv
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,10 @@ is_lmi_ISN93_ISN2016.tif,"Copyright 2017-2019, National Land Survey of Iceland",
is_lmi_ISN_vel_beta.tif,"Copyright 2017-2019, National Land Survey of Iceland",CC-BY-4.0
is_lmi_README.txt,Disclaimed,Public domain
NKG,Nordic Geodetic Commission,CC-BY-4.0
nc_dittt_gr3dnc01b.tif,Gouvernement de Nouvelle Calédonie - DITTT,Open License France - https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf
nc_dittt_gr3dnc02b.tif,Gouvernement de Nouvelle Calédonie - DITTT,Open License France - https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf
nc_dittt_gr3dnc03a.tif,Gouvernement de Nouvelle Calédonie - DITTT,Open License France - https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf
nc_dittt_README.txt,Disclaimed,Public domain
nl_nsgi_naptrans2018.tif,Nederlandse Samenwerking Geodetische Infrastructuur (NSGI),CC-BY-4.0
nl_nsgi_nlgeo2018.tif,Nederlandse Samenwerking Geodetische Infrastructuur (NSGI),CC-BY-4.0
nl_nsgi_rdcorr2018.tif,Nederlandse Samenwerking Geodetische Infrastructuur (NSGI),CC-BY-4.0
Expand Down
27 changes: 22 additions & 5 deletions grid_tools/convert_gr3dnc01b.py → nc_dittt/convert_gr3dnc01b.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,33 @@
ds = gdal.GetDriverByName('GTiff').Create(
'/vsimem/gr3dnc01b.tif', cols, rows, 3, gdal.GDT_Float32)
ds.SetMetadataItem(
'TIFFTAG_COPYRIGHT', 'Derived from work by Service Topographique, DITTT, GNC. License unclear')
'TIFFTAG_COPYRIGHT', 'Derived from work by Service Topographique, DITTT, Government of New Caledonia. Open License https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf')
ds.SetMetadataItem('TIFFTAG_IMAGEDESCRIPTION',
'Geocentric translation from IGN72 GRANDE TERRE (EPSG:4662) to RGNC91-93 (EPSG:4749). Converted from gr3dnc01b.mnt')
'Geocentric translation from IGN72 GRANDE TERRE (EPSG:4662) to RGNC91-93 (EPSG:4906). Converted from gr3dnc01b.mnt')
datetime = datetime.date.today().strftime("%Y:%m:%d %H:%M:%S")
ds.SetMetadataItem('TIFFTAG_DATETIME', datetime)
ds.SetMetadataItem('AREA_OR_POINT', 'Point')
ds.SetMetadataItem('TYPE', 'GEOCENTRIC_TRANSLATION')
ds.SetMetadataItem('area_of_use', 'France')
ds.SetMetadataItem('source_crs_code', '4662')
ds.SetMetadataItem('target_crs_epsg_code', '4749')
ds.SetMetadataItem('area_of_use', 'New Caledonia')
ds.SetMetadataItem('source_crs_wkt', """GEODCRS["IGN72 Grande Terre",
DATUM["IGN72 Grande Terre",
ELLIPSOID["International 1924",6378388,297,
LENGTHUNIT["metre",1]],
ID["EPSG",6634]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8901]],
CS[Cartesian,3],
AXIS["(X)",geocentricX,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["(Y)",geocentricY,
ORDER[2],
LENGTHUNIT["metre",1]],
AXIS["(Z)",geocentricZ,
ORDER[3],
LENGTHUNIT["metre",1]]]""")
ds.SetMetadataItem('target_crs_epsg_code', '4906')
ds.SetGeoTransform(
[minx - resx/2, resx, 0, maxy + resy/2, 0, -resy])
ds.GetRasterBand(1).SetUnitType('metre')
Expand Down
138 changes: 138 additions & 0 deletions nc_dittt/convert_gr3dnc02b.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
#!/usr/bin/env python
###############################################################################
# $Id$
#
# Project: PROJ
# Purpose: Convert New Caledonia geocentric gr3dnc02b.mnt grid
# Author: Even Rouault <even.rouault at spatialys.com>
#
###############################################################################
# Copyright (c) 2019, Even Rouault <even.rouault at spatialys.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
###############################################################################

from osgeo import gdal
from osgeo import osr
import datetime
import struct

with open('gr3dnc02b.mnt', 'rt') as f:
count_val_rows = 0
line_no = 0
for l in f.readlines():
if l[-1] == '\n':
l = l[0:-1]
if l[-1] == '\r':
l = l[0:-1]
if not l:
continue
if line_no == 0:
tokens = []
for t in l.split(' '):
if t:
tokens.append(t)
assert len(tokens) >= 13
minx = float(tokens[0])
maxx = float(tokens[1])
miny = float(tokens[2])
maxy = float(tokens[3])
resx = float(tokens[4])
resy = float(tokens[5])
assert minx < maxx
assert miny < maxy
assert resx > 0
assert resy > 0
cols = 1 + (maxx - minx) / resx
assert cols - int(cols + 0.5) < 1e-10
cols = int(cols + 0.5)
rows = 1 + (maxy - miny) / resy
assert rows - int(rows + 0.5) < 1e-10
rows = int(rows + 0.5)
ds = gdal.GetDriverByName('GTiff').Create(
'/vsimem/gr3dnc02b.tif', cols, rows, 3, gdal.GDT_Float32)
ds.SetMetadataItem(
'TIFFTAG_COPYRIGHT', 'Derived from work by Service Topographique, DITTT, Government of New Caledonia. Open License https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf')
ds.SetMetadataItem('TIFFTAG_IMAGEDESCRIPTION',
'Geocentric translation from IGN72 GRANDE TERRE (EPSG:4662) to RGNC91-93 (EPSG:4906). Converted from gr3dnc01b.mnt')
datetime = datetime.date.today().strftime("%Y:%m:%d %H:%M:%S")
ds.SetMetadataItem('TIFFTAG_DATETIME', datetime)
ds.SetMetadataItem('AREA_OR_POINT', 'Point')
ds.SetMetadataItem('TYPE', 'GEOCENTRIC_TRANSLATION')
ds.SetMetadataItem('area_of_use', 'New Caledonia')
ds.SetMetadataItem('source_crs_wkt', """GEODCRS["IGN72 Grande Terre",
DATUM["IGN72 Grande Terre",
ELLIPSOID["International 1924",6378388,297,
LENGTHUNIT["metre",1]],
ID["EPSG",6634]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8901]],
CS[Cartesian,3],
AXIS["(X)",geocentricX,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["(Y)",geocentricY,
ORDER[2],
LENGTHUNIT["metre",1]],
AXIS["(Z)",geocentricZ,
ORDER[3],
LENGTHUNIT["metre",1]]]""")
ds.SetMetadataItem('target_crs_epsg_code', '4906')
ds.SetGeoTransform(
[minx - resx/2, resx, 0, maxy + resy/2, 0, -resy])
ds.GetRasterBand(1).SetUnitType('metre')
ds.GetRasterBand(1).SetDescription('x_translation')
ds.GetRasterBand(2).SetUnitType('metre')
ds.GetRasterBand(2).SetDescription('y_translation')
ds.GetRasterBand(3).SetUnitType('metre')
ds.GetRasterBand(3).SetDescription('z_translation')
sr = osr.SpatialReference()
sr.ImportFromEPSG(4749)
ds.SetProjection(sr.ExportToWkt())
else:
tokens = []
for t in l.split('\t'):
if t:
tokens.append(t)
assert len(tokens) == 6
lon = float(tokens[0])
lat = float(tokens[1])
dx = float(tokens[2])
dy = float(tokens[3])
dz = float(tokens[4])
iy = (line_no - 1) % rows
ix = (line_no - 1) // rows
assert abs(lon - (minx + ix * resx)
) < 1e-10, (line_no, lon, minx + ix * resx)
assert abs(lat - (miny + iy * resy)
) < 1e-10, (line_no, lat, miny + iy * resy)
ds.GetRasterBand(1).WriteRaster(
ix, rows - iy - 1, 1, 1, struct.pack('f', dx))
ds.GetRasterBand(2).WriteRaster(
ix, rows - iy - 1, 1, 1, struct.pack('f', dy))
ds.GetRasterBand(3).WriteRaster(
ix, rows - iy - 1, 1, 1, struct.pack('f', dz))
count_val_rows += 1

line_no += 1

assert count_val_rows == rows * cols
gdal.GetDriverByName('GTiff').CreateCopy('gr3dnc02b.tif', ds, options=[
'COMPRESS=DEFLATE', 'PREDICTOR=3', 'INTERLEAVE=BAND'])
27 changes: 22 additions & 5 deletions grid_tools/convert_gr3dnc03a.py → nc_dittt/convert_gr3dnc03a.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,33 @@
ds = gdal.GetDriverByName('GTiff').Create(
'/vsimem/gr3dnc03a.tif', cols, rows, 3, gdal.GDT_Float32)
ds.SetMetadataItem(
'TIFFTAG_COPYRIGHT', 'Derived from work by Service Topographique, DITTT, GNC. License unclear')
'TIFFTAG_COPYRIGHT', 'Derived from work by Service Topographique, DITTT, Government of New Caledonia. Open License https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf')
ds.SetMetadataItem('TIFFTAG_IMAGEDESCRIPTION',
'Geocentric translation from NEA74 Noumea (EPSG:4644) to RGNC91-93 (EPSG:4749). Converted from gr3dnc03a.mnt')
'Geocentric translation from NEA74 Noumea (EPSG:4644) to RGNC91-93 (EPSG:4906). Converted from gr3dnc03a.mnt')
datetime = datetime.date.today().strftime("%Y:%m:%d %H:%M:%S")
ds.SetMetadataItem('TIFFTAG_DATETIME', datetime)
ds.SetMetadataItem('AREA_OR_POINT', 'Point')
ds.SetMetadataItem('TYPE', 'GEOCENTRIC_TRANSLATION')
ds.SetMetadataItem('area_of_use', 'France')
ds.SetMetadataItem('source_crs_code', '4644')
ds.SetMetadataItem('target_crs_epsg_code', '4749')
ds.SetMetadataItem('area_of_use', 'New Caledonia')
ds.SetMetadataItem('source_crs_wkt', """GEODCRS["NEA74 Noumea",
DATUM["NEA74 Noumea",
ELLIPSOID["International 1924",6378388,297,
LENGTHUNIT["metre",1]],
ID["EPSG",6644]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8901]],
CS[Cartesian,3],
AXIS["(X)",geocentricX,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["(Y)",geocentricY,
ORDER[2],
LENGTHUNIT["metre",1]],
AXIS["(Z)",geocentricZ,
ORDER[3],
LENGTHUNIT["metre",1]]]""")
ds.SetMetadataItem('target_crs_epsg_code', '4906')
ds.SetGeoTransform(
[minx - resx/2, resx, 0, maxy + resy/2, 0, -resy])
ds.GetRasterBand(1).SetUnitType('metre')
Expand Down
33 changes: 33 additions & 0 deletions nc_dittt/nc_dittt_README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# nc_dittt_README.txt

The files in this section result from the conversion of datasets originating
from [Gouvernement de la Nouvelle-Calédonie – DITTT](https://dittt.gouv.nc/circe-pour-la-nouvelle-caledonie)

## Included grids

### New Caledonia: IGN72 GRANDE TERRE (EPSG:4662) to RGNC91-93 (EPSG:4906) (using Geocentric correction)

*Source*: Gouvernement de la Nouvelle-Calédonie – DITTT](https://dittt.gouv.nc/circe-pour-la-nouvelle-caledonie)
*Format*: GeoTIFF converted from .mnt file with convert_gr3dnc01b.py
*License*: [License Ouverte (in French)](https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf) / [Open License (English translation)](https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf)
*Used by*: [EPSG:9329 Transformation](https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:coordinateOperation:EPSG::9329)

* nc_dittt_gr3dnc01b.tif

### New Caledonia - Noumea: IGN72 GRANDE TERRE (EPSG:4662) to RGNC91-93 (EPSG:4906) (using Geocentric correction)

*Source*: Gouvernement de la Nouvelle-Calédonie – DITTT](https://dittt.gouv.nc/circe-pour-la-nouvelle-caledonie)
*Format*: GeoTIFF converted from .mnt file with convert_gr3dnc02b.py
*License*: [License Ouverte (in French)](https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf) / [Open License (English translation)](https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf)
*Used by*: [EPSG:9330 Transformation](https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:coordinateOperation:EPSG::9330)

* nc_dittt_gr3dnc02b.tif

### New Caledonia - Noumea: NEA74 Noumea (EPSG:4644) to RGNC91-93 (EPSG:4906) (using Geocentric correction)

*Source*: Gouvernement de la Nouvelle-Calédonie – DITTT](https://dittt.gouv.nc/circe-pour-la-nouvelle-caledonie)
*Format*: GeoTIFF converted from .mnt file with convert_gr3dnc03a.py
*License*: [License Ouverte (in French)](https://www.etalab.gouv.fr/wp-content/uploads/2017/04/ETALAB-Licence-Ouverte-v2.0.pdf) / [Open License (English translation)](https://www.etalab.gouv.fr/wp-content/uploads/2014/05/Open_Licence.pdf)
*Used by*: [EPSG:9328 Transformation](https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:coordinateOperation:EPSG::9328)

* nc_dittt_gr3dnc03a.tif
Binary file added nc_dittt/nc_dittt_gr3dnc01b.tif
Binary file not shown.
Binary file added nc_dittt/nc_dittt_gr3dnc02b.tif
Binary file not shown.
Binary file added nc_dittt/nc_dittt_gr3dnc03a.tif
Binary file not shown.
4 changes: 4 additions & 0 deletions travis/expected_main.lst
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,10 @@ is_lmi_ISN2004_ISN2016.tif
is_lmi_ISN93_ISN2016.tif
is_lmi_ISN_vel_beta.tif
is_lmi_README.txt
nc_dittt_gr3dnc01b.tif
nc_dittt_gr3dnc02b.tif
nc_dittt_gr3dnc03a.tif
nc_dittt_README.txt
NKG
nl_nsgi_naptrans2018.tif
nl_nsgi_nlgeo2018.tif
Expand Down

0 comments on commit 57f9efa

Please sign in to comment.