aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@mines-paris.org>2018-12-03 17:20:48 +0100
committerGitHub <noreply@github.com>2018-12-03 17:20:48 +0100
commitd0506e19a71888f7f0c3aa8618d919624e754c4d (patch)
tree4468cd5ef29f3f7f6ce2ed950b5d1938cfbf84b5 /scripts
parent4794d755a8dea4f4501c61e896e1829bb720e69a (diff)
parentba111ac8323ff194039a06db87d1fb17ed8175b3 (diff)
downloadPROJ-d0506e19a71888f7f0c3aa8618d919624e754c4d.tar.gz
PROJ-d0506e19a71888f7f0c3aa8618d919624e754c4d.zip
Merge pull request #1182 from rouault/plug_new_code
Remove data/epsg, IGNF and esri.* files / support legacy +init=epsg:XXXX syntax
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/build_db_from_esri.py3
-rwxr-xr-xscripts/create_c_api_projections.py70
-rwxr-xr-xscripts/reformat_cpp.sh2
3 files changed, 53 insertions, 22 deletions
diff --git a/scripts/build_db_from_esri.py b/scripts/build_db_from_esri.py
index f642b473..bea48925 100755
--- a/scripts/build_db_from_esri.py
+++ b/scripts/build_db_from_esri.py
@@ -54,6 +54,9 @@ all_sql = []
version = 'ArcMap 10.6.1 / ArcGISPro 2.2'
all_sql.append(
"""INSERT INTO "metadata" VALUES('ESRI.VERSION', '%s');""" % (version))
+date = '2018-09-19'
+all_sql.append(
+ """INSERT INTO "metadata" VALUES('ESRI.DATE', '%s');""" % (date))
def escape_literal(x):
diff --git a/scripts/create_c_api_projections.py b/scripts/create_c_api_projections.py
index 5d10a16b..897212ee 100755
--- a/scripts/create_c_api_projections.py
+++ b/scripts/create_c_api_projections.py
@@ -56,6 +56,21 @@ cppfile.write("\n");
test_cppfile.write("/* BEGIN: Generated by scripts/create_c_api_projections.py*/\n")
+def snake_casify(s):
+ out = ''
+ lastWasLowerAlpha = False
+ for c in s:
+ if c.isupper():
+ if lastWasLowerAlpha:
+ out += '_'
+ out += c.lower()
+ lastWasLowerAlpha = False
+ else:
+ out += c
+ lastWasLowerAlpha = c.isalpha()
+ return out
+
+
for sectiondef in compounddef.iter('sectiondef'):
if sectiondef.attrib['kind'] == 'public-static-func':
for func in sectiondef.iter('memberdef'):
@@ -76,26 +91,35 @@ for sectiondef in compounddef.iter('sectiondef'):
paramname = param.find('declname').text
if paramname == 'properties':
continue
- params.append((type, paramname))
+ params.append((type, snake_casify(paramname)))
shortName = name[len('create'):]
+ c_shortName = snake_casify(shortName)
- decl = "proj_obj_create_projected_crs_"
- decl += shortName
+ decl = "proj_obj_create_conversion_"
+ decl += c_shortName
decl += "(\n"
- decl += " PJ_OBJ* geodetic_crs, const char* crs_name,\n"
+ decl += " PJ_CONTEXT *ctx,\n"
+ has_output_params = False
for param in params:
+ if has_output_params:
+ decl += ",\n"
+
if param[0] in ('int', 'bool'):
- decl += " int " + param[1] + ",\n"
+ decl += " int " + param[1]
else:
- decl += " double " + param[1] + ",\n"
+ decl += " double " + param[1]
+ has_output_params = True
+
if has_angle:
- decl += " const char* angUnitName, double angUnitConvFactor"
- if has_linear:
- decl += ","
- decl += "\n"
+ if has_output_params:
+ decl += ",\n"
+ decl += " const char* ang_unit_name, double ang_unit_conv_factor"
+ has_output_params = True
if has_linear:
- decl += " const char* linearUnitName, double linearUnitConvFactor"
+ if has_output_params:
+ decl += ",\n"
+ decl += " const char* linear_unit_name, double linear_unit_conv_factor"
decl += ")"
header.write("PJ_OBJ PROJ_DLL *" + decl + ";\n\n")
@@ -108,17 +132,17 @@ for sectiondef in compounddef.iter('sectiondef'):
cppfile.write(" *\n")
cppfile.write(" * See osgeo::proj::operation::Conversion::create" + shortName + "().\n")
cppfile.write(" *\n")
- cppfile.write(" * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor).\n")
+ cppfile.write(" * Linear parameters are expressed in (linear_unit_name, linear_unit_conv_factor).\n")
if has_angle:
- cppfile.write(" * Angular parameters are expressed in (angUnitName, angUnitConvFactor).\n")
+ cppfile.write(" * Angular parameters are expressed in (ang_unit_name, ang_unit_conv_factor).\n")
cppfile.write(" */\n")
cppfile.write("PJ_OBJ* " + decl + "{\n");
- if not has_linear:
- cppfile.write(" const auto& linearUnit = UnitOfMeasure::METRE;\n")
- else:
- cppfile.write(" UnitOfMeasure linearUnit(createLinearUnit(linearUnitName, linearUnitConvFactor));\n")
+ cppfile.write(" SANITIZE_CTX(ctx);\n");
+ cppfile.write(" try {\n");
+ if has_linear:
+ cppfile.write(" UnitOfMeasure linearUnit(createLinearUnit(linear_unit_name, linear_unit_conv_factor));\n")
if has_angle:
- cppfile.write(" UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor));\n")
+ cppfile.write(" UnitOfMeasure angUnit(createAngularUnit(ang_unit_name, ang_unit_conv_factor));\n")
cppfile.write(" auto conv = Conversion::create" + shortName + "(PropertyMap()")
for param in params:
if param[0] in 'int':
@@ -133,12 +157,16 @@ for sectiondef in compounddef.iter('sectiondef'):
cppfile.write(", Scale(" + param[1] + ")")
cppfile.write(");\n")
- cppfile.write(" return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, linearUnit);\n")
+ cppfile.write(" return proj_obj_create_conversion(conv);\n")
+ cppfile.write(" } catch (const std::exception &e) {\n");
+ cppfile.write(" proj_log_error(ctx, __FUNCTION__, e.what());\n")
+ cppfile.write(" }\n")
+ cppfile.write(" return nullptr;\n")
cppfile.write("}\n")
test_cppfile.write("{\n")
- test_cppfile.write(" auto projCRS = proj_obj_create_projected_crs_" + shortName + "(\n")
- test_cppfile.write(" geogCRS, nullptr")
+ test_cppfile.write(" auto projCRS = proj_obj_create_conversion_" + c_shortName + "(\n")
+ test_cppfile.write(" m_ctxt")
for param in params:
test_cppfile.write(", 0")
if has_angle:
diff --git a/scripts/reformat_cpp.sh b/scripts/reformat_cpp.sh
index 51127529..b50fa1e1 100755
--- a/scripts/reformat_cpp.sh
+++ b/scripts/reformat_cpp.sh
@@ -15,7 +15,7 @@ esac
TOPDIR="$SCRIPT_DIR/.."
-for i in "$TOPDIR"/include/proj/*.hpp "$TOPDIR"/include/proj/internal/*.hpp "$TOPDIR"/src/*.cpp "$TOPDIR"/test/unit/test*.cpp; do
+for i in "$TOPDIR"/include/proj/*.hpp "$TOPDIR"/include/proj/internal/*.hpp "$TOPDIR"/src/*.cpp "$TOPDIR"/test/unit/*.cpp; do
if ! echo "$i" | grep -q "lru_cache.hpp"; then
"$SCRIPT_DIR"/reformat.sh "$i";
fi